春分の日の計算式がちょっとだけややこしいという話
今日は春分の日ですね。
祝日ですが、土曜日だと何か損した気がしてなりませんね。
春分の日
春分の日とは、昼と夜の長さがだいたい一緒になる日、という事です。
春分の日が、お彼岸の中日になるわけですが、だいたい3月の20日とか21日とかですよね。
実は、固定されていないんです。
かといって、成人の日や体育の日のように、月曜日に、というわけでもないんです。
ややこしい計算
プログラムを組むうえで、土日の算出は可能ですが、祝日は自分でロジックを組まないといけません。
日にちが固定されているものは簡単ですが、そうでないものは結構面倒です。
成人の日や体育の日など、第○月曜日とかもまあ面倒ですが、これはそれほどでもありません。
スポンサーリンク
計算式
Int(20.8431 + 0.242194 * (year - 1980)) - Int((year - 1980) / 4)
※year = 対象年、Int()は小数点以下切り捨て
なにゆえにこんな事が必要かというと、春分・秋分ともに、天文に伴う日付だからです。
そう、うるう年などの微妙な誤差を、計算する必要があるのです。
これに当てはめると、
2014年・・・21日
2015年・・・21日
2016年・・・20日
2017年・・・20日
2018年・・・21日
2019年・・・21日
2020年・・・20日
2021年・・・20日
と、だいたい2年おきに20日と21日を交互する感じになります。
ただ、この規則性も、うるう年によって補正される年があると思いますが。
なお、この計算式が使えるのは2100年まで、という事らしいです。
スポンサーリンク