JavaScriptの旧暦変換

王林
王林オリジナル
2023-05-09 22:24:091144ブラウズ

世界の急速な発展に伴い、私たちの生活はますます便利になり、ネットワーク技術もますます成熟しています。しかし、いくつかの側面では、問題を解決するために依然として伝統的な知識やスキルに依存する必要があります。例えば、私たちは日常生活の中で、旧暦を太陽暦に変換する必要があることがよくありますが、この変換作業は実は非常に面倒です。今回はJavaScriptを使って旧暦を太陽暦に変換する方法を紹介します。

まず、太陽暦の日付を太陰暦の日付に変換する方法を明確にする必要があります。伝統的な太陰暦は、月の満ち欠けと太陽暦に基づいて計算される暦であり、中国文化における伝統的な計時単位でもあります。中国では、人々は通常、旧暦の祭りや旧暦の誕生日などの重要な日付を決定するためにこのカレンダーを使用します。ただし、暦体系は複雑で扱いにくいため、直接変換することは困難です。したがって、このプロセスを完了するには最新のテクノロジーを使用する必要があります。

JavaScript は Web 開発に使用されるスクリプト言語で、Web ページ上でインタラクティブで動的なデザインを実行できます。 JavaScript の日付オブジェクト (Date) を使用すると、現在の日付、時刻、週、月、その他の情報を簡単に取得できます。 JavaScript では、Date オブジェクトを作成し、それを使用して日付と時刻を表すことができます。 Date オブジェクトの構文は次のとおりです。

var date = new Date();

このステートメントは、現在の日付と時刻を表す Date オブジェクトを作成します。特定の日付の Date オブジェクトを取得したい場合は、次の構文を使用できます:

var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);

このうち、year は年を表し、month は月を表し、値の範囲は 0 ~ 11、0 です。 1 月を表し、11 は 12 月を表します。日は日付を表し、値の範囲は 1 ~ 31 です。時間は時間数を表し、値の範囲は 0 ~ 23 です。分は分数を表し、値の範囲は 0 ~ 59 です。秒は秒数を表し、値の範囲は 0 ~ 59 です。ミリ秒はミリ秒数を表し、値の範囲は 0 ~ 999 です。最後のパラメータは省略できることに注意してください。省略した場合、ミリ秒数はデフォルトの 0 になります。

次に、JavaScriptを使用して旧暦を変換する方法を紹介します。まず、太陰暦と太陽暦の対応関係を知る必要があります。太陰暦は月の満ち欠けに基づいて計算され、太陽暦は太陽の周りの地球の公転周期に基づいて計算されます。したがって、最初に今日が年の何日かを決定し、次にいくつかのルールを使用して旧暦の日付を計算する必要があります。

まず、各年の太陰日数を保存する配列を定義する必要があります。配列の各ビットは、その年がうるう年かどうかを示し、0 の場合はうるう年ではなく、1 の場合はうるう年です。各太陰月の日数は固定されていないため、この配列に基づいて各太陰月の日数を計算する必要があります。

var lunarMonths = [
    0x04bd8,   // 1900
    0x04ae0,
    0x0a570,
    0x054d5,
    0x0d260,
    0x0d950,
    0x16554,
    0x056a0,
    0x09ad0,
    0x055d2,
    0x04ae0,
    0x0a5b6,
    0x0a4d0,
    0x0d250,
    0x1d255,
    0x0b540,
    0x0d6a0,
    0x0ada2,
    0x095b0,
    0x14977,
    0x04970,
    0x0a4b0,
    0x0b4b5,
    0x06a50,
    0x06d40,
    0x1ab54,
    0x02b60,
    0x09570,
    0x052f2,
    0x04970,
    0x06566,
    0x0d4a0,
    0x0ea50,
    0x06e95,
    0x05ad0,
    0x02b60,
    0x186e3,
    0x092e0,
    0x1c8d7,
    0x0c950,
    0x0d4a0,
    0x1d8a6,
    0x0b550,
    0x056a0,
    0x1a5b4,
    0x025d0,
    0x092d0,
    0x0d2b2,
    0x0a950,
    0x0b557,
    0x06ca0,
    0x0b550,
    0x15355,
    0x04da0,
    0x0a5b0,
    0x14563,
    0x092e0,
    0x0c960,
    0x0d954,
    0x0d4a0,
    0x0da50,
    0x07552,
    0x056a0,
    0x0abb7,
    0x025d0,
    0x092d0,
    0x0cab5,
    0x0a950,
    0x0b4a0,
    0x0baa4,
    0x0ad50,
    0x055d9,
    0x04bd0,
    0x0a4d0,
    0x0d8d7,
    0x0d250,
    0x0d520,
    0x0dd45,
    0x0b5a0,
    0x056d0,
    0x055b2,
    0x049b0,
    0x0a577,
    0x0a4b0,
    0x0aa50,
    0x1b255,
    0x06d20,
    0x0ada0,
    0x14b63
];

次に、1900 年から 2050 年までの各年の初日の新暦の日付に対応する旧暦の日付を格納する配列を定義する必要があります。この配列には閏月をシンボルとして含むデータが格納されるため、バイナリ値を使用して、年のどの月が閏月であるかを示すか、閏月がない場合は 0 を示す必要があります。

var lunarInfo = [
    0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2, // 1900-1909
    0x04ae0,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,0x04970, // 1910-1919
    0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,0x06566, // 1920-1929
    0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,0x0d4a0, // 1930-1939
    0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,0x06ca0, // 1940-1949
    0x0b550,0x15355,0x04da0,0x0a5b0,0x14563,0x092e0,0x0c960,0x0d954,0x0d4a0,0x0da50, // 1950-1959
    0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,0x0a950,0x0b4a0,0x0baa4,0x0ad50, // 1960-1969
    0x055d9,0x04bd0,0x0a4d0,0x0d8d7,0x0d250,0x0d520,0x0dd45,0x0b5a0,0x056d0,0x055b2, // 1970-1979
    0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,0x14b63,0x09370,0x04970, // 1980-1989
    0x064b0,0x0d4a0,0x1d8a7,0x0d550,0x0d6a0,0x0dea2,0x0a5b0,0x055d4,0x052d0,0x0a9a8, // 1990-1999
    0x0e950,0x06aa0,0x1a6c4,0x0aae0,0x0a2e0,0x0d2e3,0x0c950,0x0ca50,0x0da50,0x05aa4, // 2000-2009
    0x056d0,0x0adb8,0x025d0,0x092d0,0x0cab6,0x0a950,0x0b4a0,0x0baa0,0x0ad50,0x05550, // 2010-2019
    0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60, // 2020-2029
    0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,0x05aa0,0x076a3,0x096d0,0x04dd5,0x04ad0, // 2030-2039
    0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577, // 2040-2049
    0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0aea0,0x1a5b6,0x052b0,0x0a930,0x07954,0x06aa0, // 2050
];

次に、指定された太陽暦の日付に基づいて太陰暦の日付を計算する関数を作成する必要があります。この関数の実装プロセスは比較的複雑ですが、一般的な考え方は、まず現在の太陽暦の日付が何年、何月、何日であるかを判断し、それから太陰暦の関連ルールに従って計算することです。ここでは詳しく説明しませんが、興味のある方は詳細な情報を参照してください。

最後に、取得した月の日付を Web ページにレンダリングする必要があります。具体的なアプローチとしては、デザインに HTML と CSS を使用し、さまざまなニーズに応じてスタイルとレイアウトを設定することができます。

つまり、JavaScript の強力な機能を利用することで、太陰暦から太陽暦への変換を簡単に実現でき、生活の記録や管理がより容易になります。同時に、JavaScript を学ぶことでスキルの幅を広げ、競争力を向上させることもできます。

以上がJavaScriptの旧暦変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。