ホームページ >ウェブフロントエンド >フロントエンドQ&A >JavaScriptの旧暦変換
世界の急速な発展に伴い、私たちの生活はますます便利になり、ネットワーク技術もますます成熟しています。しかし、いくつかの側面では、問題を解決するために依然として伝統的な知識やスキルに依存する必要があります。例えば、私たちは日常生活の中で、旧暦を太陽暦に変換する必要があることがよくありますが、この変換作業は実は非常に面倒です。今回は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 サイトの他の関連記事を参照してください。