日本には様々な祝日があります。元旦、成人の日、建国記念の日…。
特定の日やハッピーマンデーの祝日判定をするのは容易ですが、春分の日は「春分日」、秋分の日は「秋分日」となっていて、官報で発表されるまで、何月何日が春分日・秋分日なのかは決まっていません。
しかし、それでは数年先の春分の日・秋分の日が何月何日なのか分からなくて不便なこともあります。
ただ、春分日・秋分日を簡易的に求める方法が存在するのでそれを紹介します。
ここでは、コンピュータを使用することを前提に話を進めていきます。
まず、ある年の春分・秋分を調べます。これは国立天文台の暦要項のページを見れば確認できます。
未来の春分の日・秋分の日を調べるのであれば一番最新のものを選んだほうが精度がよくなります。
ここでは、2008年(平成20年)のデータを使用します。2008年の春分は「3月20日14時48分」、秋分は「9月23日0時45分」です。
あと、1太陽年の長さを調べます。
1太陽年はグーグル電卓によると31,556,926秒(365.24199日)だそうです。
以上でデータは揃いました。次は計算です。
まず、春分・秋分を通日または通秒に変換します。プログラムならUnix timeという1970-01-01 00:00:00(UTC)を起点とした秒数表現が一般的です(JavaやJavaScriptはミリ秒表現)。
ブラウザのアドレスバーにそれぞれ
と打ち込んでエンターを押してやれば、1205992080000,1222098300000という値が求まります(JavaScriptでは0-11なので入力する数字が1つずれる)。ただしこれはミリ秒表現です。
X年の春分を求めるには、X年の春分=基準年の春分+(X-基準年)*1太陽年
X年の秋分を求めるには、X年の秋分=基準年の秋分+(X-基準年)*1太陽年
となります。今回の場合は
X年の春分[ms]=1205992080000+(X-2008)*31556926000
X年の秋分[ms]=1222098300000+(X-2008)*31556926000
となります。例として2015年の春分・秋分を求めます。
1205992080000+(2015-2008)*31556926000=1426890562000
1222098300000+(2015-2008)*31556926000=1442996782000
これで求まりました。
が、これでは普通の人間は読めません。人間のふりをしたロボットなら読めるかもしれませんが、、、
ということで、これを人間の読める形に戻します。JavaScriptなら、ブラウザのアドレスバーに
すると、Sat Mar 21 2015 07:29:22 GMT+0900、Wed Sep 23 2015 17:26:22 GMT+0900が求まります。
ということで、2015年の春分の日は3月21日、秋分の日は9月23日だということが分かります。
※注意
簡易計算なので、あまり基準年から離れた年を計算すると誤差が出る可能性があります。
特定の日やハッピーマンデーの祝日判定をするのは容易ですが、春分の日は「春分日」、秋分の日は「秋分日」となっていて、官報で発表されるまで、何月何日が春分日・秋分日なのかは決まっていません。
しかし、それでは数年先の春分の日・秋分の日が何月何日なのか分からなくて不便なこともあります。
ただ、春分日・秋分日を簡易的に求める方法が存在するのでそれを紹介します。
ここでは、コンピュータを使用することを前提に話を進めていきます。
まず、ある年の春分・秋分を調べます。これは国立天文台の暦要項のページを見れば確認できます。
未来の春分の日・秋分の日を調べるのであれば一番最新のものを選んだほうが精度がよくなります。
ここでは、2008年(平成20年)のデータを使用します。2008年の春分は「3月20日14時48分」、秋分は「9月23日0時45分」です。
あと、1太陽年の長さを調べます。
1太陽年はグーグル電卓によると31,556,926秒(365.24199日)だそうです。
以上でデータは揃いました。次は計算です。
まず、春分・秋分を通日または通秒に変換します。プログラムならUnix timeという1970-01-01 00:00:00(UTC)を起点とした秒数表現が一般的です(JavaやJavaScriptはミリ秒表現)。
ブラウザのアドレスバーにそれぞれ
javascript:alert(new Date(2008,02,20,14,48,00).getTime()); javascript:alert(new Date(2008,08,23,0,45,00).getTime());
と打ち込んでエンターを押してやれば、1205992080000,1222098300000という値が求まります(JavaScriptでは0-11なので入力する数字が1つずれる)。ただしこれはミリ秒表現です。
X年の春分を求めるには、X年の春分=基準年の春分+(X-基準年)*1太陽年
X年の秋分を求めるには、X年の秋分=基準年の秋分+(X-基準年)*1太陽年
となります。今回の場合は
X年の春分[ms]=1205992080000+(X-2008)*31556926000
X年の秋分[ms]=1222098300000+(X-2008)*31556926000
となります。例として2015年の春分・秋分を求めます。
1205992080000+(2015-2008)*31556926000=1426890562000
1222098300000+(2015-2008)*31556926000=1442996782000
これで求まりました。
が、これでは普通の人間は読めません。人間のふりをしたロボットなら読めるかもしれませんが、、、
ということで、これを人間の読める形に戻します。JavaScriptなら、ブラウザのアドレスバーに
javascript:alert(new Date(1426890562000)); javascript:alert(new Date(1442996782000));
すると、Sat Mar 21 2015 07:29:22 GMT+0900、Wed Sep 23 2015 17:26:22 GMT+0900が求まります。
ということで、2015年の春分の日は3月21日、秋分の日は9月23日だということが分かります。
※注意
簡易計算なので、あまり基準年から離れた年を計算すると誤差が出る可能性があります。