二十四節気

カレンダーを作る際、閏(うるう)年の判定プログラムはよく話題に挙げられます。
年が100の倍数のときは400で割れる年、100の倍数でないときは4で割り切れる年ってやつですね。

今回はもう少しややこしい二十四節気(にじゅうしせっき)の判定プログラムです。
祝日の春分・秋分を含む二十四節気は、日付が固定されてるわけではなく計算式で求められます。
二十四節気 – Wikipediaによると、
「1太陽年を日数(平気法)あるいは太陽の黄道上の視位置(定気法)によって24等分し、その分割点を含む日に季節を表す名称を付したもの」
とあります。
360度を24で割ると15度。
視太陽黄経が15度の倍数になる瞬間、日常的にはそれを含む「日」を二十四節気とします。
計算式は以下のサイトで説明されています。
二十四節気の略算式
[日] = INT(D + (A × (Y – 1900)) – INT((Y – 1900) ÷ 4))

この二十四節気を求めるプログラム例として、
1月の小寒から12月の冬至までの各パラメータ(dおよびa)の配列(結合配列の配列)を用意します。
(ここではActionScriptで書いています)

あとは以下のような日付を計算する関数を作り、各引数を変えて使うだけです。

ここで気を付けることは、小寒から雨水までの4つは年(y)から1引いておくことです。
(2008年ならyには2007を使用する)

これらを使ってFlexのDataGridに二十四節気を表示させました。
(Flashが表示されてない人はこちらから→season.swf)
フォームに年を西暦で入力してください。(1870?2099年まで, 精度は0.03日程度)
また、DataGridの各行をクリックすると各節気の暦便覧も見れます。

これ以外にも、土用や節分などの雑節もあります。
さらに六曜干支なども考慮すると、まともな暦を作るのは結構たいへんそうですね;;

あわせて読む:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です