冬至についてはグーグルさんにお尋ね下さい。今年の冬至は2016年12月21日ですが来年は何日になるかご存知ですか。来年は、12月22日なんです。そゆことで2020年の冬至て何日になるのかの求め方です。以下数字が出て来ますがほぼ算数レベルの話です。
冬至は、太陽黄経が270度となる瞬間ということなので冬至となった瞬間の日時から再度地球が公転軌道上の同じ位置にくるまでの公転周期時間さえわかれば計算可能です。その時間は、365日5時間48分27.936秒だそうです。どうやって計測したのかよくわかりませんがそういうことらしいです。というこで今年の冬至日2016年12月21日19時36分19秒より2020年まで4回地球は公転するので4回分の公転周期時間を加算するといいということになります。ということで公転時間を秒に換算すると31,556,907.936秒それを4倍すると126,227,631.744秒なり1,460日23時間13分51.744秒後であることが算出できます。といこうでザクッと1,460日を1年分365日で割ると4となりますが2020年は閏年なのでそれは同日ではなく12月20日ということになります。そして余った23時間13分51.77秒を19時36分19秒に加算すると2020年12月21日18時50分11秒が冬至ということが判ります。日付時間の計算て面倒ですよね。こんがらがってしまいます。間に閏年が複数回あったらもう大混乱です。
そこでそんな計算EXCELの関数にないかなと思って日付時間関係の関数を調べたらありません。
ありませんが公転周期時間を日付シリアル数にすると計算できます。
公転周期日数 = 公転周期秒数 / 一日の秒数
365.24199 = 31556907.936÷(60×60×24)
ということになりますので
指定年冬至日=基準日+公転周期日数×公転回数
で目的の日付が算出されます。
VBA 関数にはDateAddというのがあり簡単に目的の日時が算出できます。
Const wsDate As Date = “2016/12/21 19:36:19” ‘– 冬至基準日–
Const PrSec As Double = 31556907.936 ‘– 地球公転周期秒数 —
Dim iYY As Long ’– 指定西暦年数 —
iYY= 2020
Msgbox DateAdd(“s”, PrSec * (iYY – Year(wsDate)), wsDate)
以上の計算は、地球の公転周期時間に誤差がなく変化しないものとして計算方法です。
ほぼ問題ないみたいですけど。
もしかして冬至基準日に公転周期日数の4分の1を加算していけば、春分、夏至、秋分になるのではと思ったのですがそんなに単純なものではないみたいでいろいろ事情がありそうです。
ところで公転周期日数の端数0.24199ですが、時間にすると5時間48分27.936秒分なります。この余りがあるから閏年に1日多くして調整しているのですが、約46分ほど余計に進めているんでないのというギモンも湧いて来ます。どうなっているのでしょうか。暦の計算は本当にややこしいですね。
コメント