suchowan's blog

アクセスカウンタ

zoom RSS 一日が日没に始まる暦

<<   作成日時 : 2014/07/25 00:00   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 0

ISO19108の古代バビロニア暦は日没に始まることになっていましたが、
when_exe Ruby版では、一日の始まりの時刻の管理は暦法ではなく時法
で行います。

UTC に対して時差3時間で一日がローカル時刻の18時に始まる時法は、

 Clock('+03:00?border=0*18')

です。

“*”はWhen.exe Standard Representationの記法で「前日」を意味します。

これを使うと、時刻の計算は下記の例のようになります[1]

date = when?('NebuchadnezzarII1.1.1T16:00:00', :clock=>'+03:00?border=0*18')
4.times do
 p [date, date.to_f] #=> 下記
 date += PT1H
end

[NebuchadnezzarII01(-603).01.01T:16:00:00+03:00, 1500904.0416666665]
[NebuchadnezzarII01(-603).01.01T:17:00:00+03:00, 1500904.0833333335]
[NebuchadnezzarII01(-603).01.02T*18:00:00+03:00, 1500904.125]
[NebuchadnezzarII01(-603).01.02T*19:00:00+03:00, 1500904.1666666665]

“*”(0x2A)<“:”(0x3A)なので確かにWhen.exe Standard Expressionでは文字列の
辞書順と時刻順が一致します。

UTC に対して時差3時間で一日が東経45度北緯32度での日没に始まる時法は、

 Clock('+03:00?long=45&lat=32&border=Sunset')

で、日没の時刻は、

date = when?('NebuchadnezzarII1.1.1T18:14:00', :clock=>'+03:00?long=45&lat=32&border=Sunset')
p date.sunset #=> NebuchadnezzarII01(-603).01.02T*18:14:18.65+03:00

となります[2]

これを使うと、時刻の計算は下記の例のようになります。

date = when?('NebuchadnezzarII1.1.1T18:13:00', :clock=>'+03:00?long=45&lat=32&border=Sunset')
4.times do
 p [date, date.to_f] #=> 下記
 date += PT1M
end

[NebuchadnezzarII01(-603).01.01T:18:13:00+03:00, 1500904.1340277777]
[NebuchadnezzarII01(-603).01.01T:18:14:00+03:00, 1500904.134722222]
[NebuchadnezzarII01(-603).01.02T*18:15:00+03:00, 1500904.1354166665]
[NebuchadnezzarII01(-603).01.02T*18:16:00+03:00, 1500904.1361111111]

日没の時刻は日々変わりますから、場合によっては同じ時分秒が一日に2度
起ることがあります。その場合も“T*”か“T:”かで両者を区別することができます。

[1] 例によってライブラリへの反映は次回バージョンアップ時です。
[2] 略算式のうえ遥かな過去なので精度は期待できませんが…

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
なるほど(納得、参考になった、ヘー)

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
一日が日没に始まる暦 suchowan's blog/BIGLOBEウェブリブログ
文字サイズ:       閉じる