師匠の散歩

きままにPerlでも

ユリウス日の計算

「Wikiユリウス通日」と「新こよみ便利帳」の計算方法を比較する/ checkJuliusDay.cgi

参考にしたのは、「Wikiユリウス通日」と「新こよみ便利帳」である。紀元前の数値化がそれぞれ異なる。

wikiユリウス通日
西暦元年を 1年、紀元前1年を -1年とし、ゼロ年は存在しない(ユリウス暦の年月日)
新こよみ便利帳
西暦元年を 1年、紀元前1年を 0年とし、紀元前年 n年を -(n-1)年とする
注意 2011年4月12日
「新こよみ便利帳」に記載の、ユリウス日を求める式をPerlで実装すると、-99年や-100年などで問題が発生している。
今のところ、西暦元年以降は問題ないようだ。
「新こよみ便利帳」に記載の、ユリウス日から年月日を求める関数は間違いなくPerlで実装できているようだ。

ユリウス日ゼロ

セット
年/月/日 時-分-秒
wiki
グレゴリオ暦から
便利帳計算式
グレゴリオ暦から
便利帳計算式 年月日
逆算 グレゴリウス暦
-4712/1/1 12-0-03838-4712/1/1 + 12-0-0 + 4
-4713/11/24 12-0-000-4713/11/24 + 12-0-0 + 1
-4713/1/1 12-0-0-327-327-4713/1/1 + 12-0-0 + 4

西暦元年1月1日

セット
年/月/日 時-分-秒
wiki
グレゴリオ暦から
便利帳計算式
グレゴリオ暦から
便利帳計算式 年月日
逆算 グレゴリウス暦
1/1/1 0-0-01721425.51721425.51/1/1 + 0-0-0 + 1
0/12/31 0-0-01721424.51721424.50/12/31 + 0-0-0 + 0
0/12/31 23-59-591721425.499988431721425.499988430/12/31 + 23-59-59 + 0
0/1/1 0-0-01721059.51721059.50/1/1 + 0-0-0 + 6
-1/12/31 23-59-591721059.499988431721059.49998843-1/12/31 + 23-59-59 + 5

うるう日

セット
年/月/日 時-分-秒
wiki
グレゴリオ暦から
便利帳計算式
グレゴリオ暦から
便利帳計算式 年月日
逆算 グレゴリウス暦
0/2/28 0-0-01721117.51721117.50/2/28 + 0-0-0 + 1
0/2/29 0-0-01721118.51721118.50/2/29 + 0-0-0 + 2
0/3/1 0-0-01721119.51721119.50/3/1 + 0-0-0 + 3
-1/2/28 0-0-01720752.51720752.5-1/2/28 + 0-0-0 + 0
-1/3/1 0-0-01720753.51720753.5-1/3/1 + 0-0-0 + 1
-2/2/28 0-0-01720387.51720387.5-2/2/28 + 0-0-0 + 6
-2/3/1 0-0-01720388.51720388.5-2/3/1 + 0-0-0 + 0
-3/2/28 0-0-01720022.51720022.5-3/2/28 + 0-0-0 + 5
-3/3/1 0-0-01720023.51720023.5-3/3/1 + 0-0-0 + 6
-4/2/28 0-0-01719656.51719656.5-4/2/28 + 0-0-0 + 3
-4/3/1 0-0-01719658.51719658.5-4/3/1 + 0-0-0 + 5
セット
年/月/日 時-分-秒
wiki
グレゴリオ暦から
便利帳計算式
グレゴリオ暦から
便利帳計算式 年月日
逆算 グレゴリウス暦
-101/12/31 0-0-01684534.51684534.5-101/12/31 + 0-0-0 + 0
-100/1/1 0-0-01684535.51684535.5-100/1/1 + 0-0-0 + 1
-100/2/27 0-0-01684592.51684592.5-100/2/27 + 0-0-0 + 2
-100/2/28 0-0-01684593.51684593.5-100/2/28 + 0-0-0 + 3
-100/3/1 0-0-01684594.51684595.5-100/3/2 + 0-0-0 + 5
-100/3/2 0-0-01684595.51684596.5-100/3/3 + 0-0-0 + 6
-100/3/3 0-0-01684596.51684597.5-100/3/4 + 0-0-0 + 0
-100/3/4 0-0-01684597.51684598.5-100/3/5 + 0-0-0 + 1
-100/3/5 0-0-01684598.51684599.5-100/3/6 + 0-0-0 + 2
-100/3/6 0-0-01684599.51684600.5-100/3/7 + 0-0-0 + 3
-100/3/7 0-0-01684600.51684601.5-100/3/8 + 0-0-0 + 4
-100/3/8 0-0-01684601.51684602.5-100/3/9 + 0-0-0 + 5
-100/3/9 0-0-01684602.51684603.5-100/3/10 + 0-0-0 + 6
-100/3/10 0-0-01684603.51684604.5-100/3/11 + 0-0-0 + 0
-100/3/11 0-0-01684604.51684605.5-100/3/12 + 0-0-0 + 1
-100/3/12 0-0-01684605.51684606.5-100/3/13 + 0-0-0 + 2
-100/3/13 0-0-01684606.51684607.5-100/3/14 + 0-0-0 + 3
-100/3/14 0-0-01684607.51684608.5-100/3/15 + 0-0-0 + 4
-100/3/15 0-0-01684608.51684609.5-100/3/16 + 0-0-0 + 5
-100/3/16 0-0-01684609.51684610.5-100/3/17 + 0-0-0 + 6
-100/3/17 0-0-01684610.51684611.5-100/3/18 + 0-0-0 + 0
-100/3/18 0-0-01684611.51684612.5-100/3/19 + 0-0-0 + 1
-100/3/19 0-0-01684612.51684613.5-100/3/20 + 0-0-0 + 2
-100/3/20 0-0-01684613.51684614.5-100/3/21 + 0-0-0 + 3
-100/3/21 0-0-01684614.51684615.5-100/3/22 + 0-0-0 + 4
-100/3/22 0-0-01684615.51684616.5-100/3/23 + 0-0-0 + 5
-100/3/23 0-0-01684616.51684617.5-100/3/24 + 0-0-0 + 6
-100/3/24 0-0-01684617.51684618.5-100/3/25 + 0-0-0 + 0
-100/3/25 0-0-01684618.51684619.5-100/3/26 + 0-0-0 + 1
-100/3/26 0-0-01684619.51684620.5-100/3/27 + 0-0-0 + 2
-100/3/27 0-0-01684620.51684621.5-100/3/28 + 0-0-0 + 3
-100/3/28 0-0-01684621.51684622.5-100/3/29 + 0-0-0 + 4
-100/3/29 0-0-01684622.51684623.5-100/3/30 + 0-0-0 + 5
-100/3/30 0-0-01684623.51684624.5-100/3/31 + 0-0-0 + 6
-100/3/31 0-0-01684624.51684625.5-100/4/1 + 0-0-0 + 0
-100/4/1 0-0-01684625.51684626.5-100/4/2 + 0-0-0 + 1
-100/4/2 0-0-01684626.51684627.5-100/4/3 + 0-0-0 + 2
-100/12/31 0-0-01684899.51684900.5-99/1/1 + 0-0-0 + 2
-99/1/1 0-0-01684900.51684901.5-99/1/2 + 0-0-0 + 3
-99/1/2 0-0-01684901.51684902.5-99/1/3 + 0-0-0 + 4
セット
年/月/日 時-分-秒
wiki
グレゴリオ暦から
便利帳計算式
グレゴリオ暦から
便利帳計算式 年月日
逆算 グレゴリウス暦
-400/2/27 0-0-01575019.51575019.5-400/2/27 + 0-0-0 + 0
-400/2/28 0-0-01575020.51575020.5-400/2/28 + 0-0-0 + 1
-400/2/29 0-0-01575021.51575021.5-400/2/29 + 0-0-0 + 2

新くらし便利帳の計算式で、グレゴリオ暦の年月日(紀元前2年は-1年とする)を用いると、次のことが言える

主要な年月日

セット
年/月/日 時-分-秒
wiki
グレゴリオ暦から
便利帳計算式
グレゴリオ暦から
便利帳計算式 年月日
逆算 グレゴリウス暦
1582/10/4 0-0-02299149.52299149.51582/10/4 + 0-0-0 + 1
1582/10/14 0-0-02299159.52299159.51582/10/14 + 0-0-0 + 4
1582/10/15 0-0-02299160.52299160.51582/10/15 + 0-0-0 + 5
1970/1/1 0-0-02440587.52440587.51970/1/1 + 0-0-0 + 4
1900/2/28 0-0-02415078.52415078.51900/2/28 + 0-0-0 + 3
1900/3/1 0-0-02415079.52415079.51900/3/1 + 0-0-0 + 4
2000/1/1 0-0-02451544.52451544.52000/1/1 + 0-0-0 + 6
1000/2/28 0-0-02086360.52086360.51000/2/28 + 0-0-0 + 5
1000/3/1 0-0-02086361.52086361.51000/3/1 + 0-0-0 + 6
2000/2/28 0-0-02451602.52451602.52000/2/28 + 0-0-0 + 1
2000/2/29 0-0-02451603.52451603.52000/2/29 + 0-0-0 + 2
2000/3/1 0-0-02451604.52451604.52000/3/1 + 0-0-0 + 3

ユリウス日は日数計算を主眼としており、時間計算は余剰的な役割である。 そのため、gmtimeに対する localtimeのようなタイムゾーングリニッジ時刻の補正は別途行う必要がある。

まとめ

本サイトでは、年月日をグレゴリウス暦で記載する。紀元前の場合は、紀元前1年1月1日を年から1を減算した、($tear,$month,$day)=(0,1,1)を用いて表す。 この形式は「新こよみ便利帳」およびwikiユリウス通日で同じ考え方である。

ユリウス日を求めるにあたり、「新こよみ便利帳」の計算式と、wikiユリウス通日の修正ユリウス日を求めるフリーゲルの計算式は、どちらも同じ値となった。 を比較したところ、理論的に正しい値とを返すのはwikiの式であった。 よって、本サイトでは、「wiki通日」の計算式を採用する。 。

逆計算プログラムでユリウス日から年月日を求める式は、「新こよみ便利帳」に記載の計算式を採用するが、原典とは以下の2点を変更した。

床関数の採用
ユリウス日を整数部、小数部に分割する際、床関数を使った(原典では切り捨てFIX)
⇒ 原典ではー4713年以前は計算できなかったが、上記への変更で制限が無くなった
秒の計算でround関数を採用
年月日時分秒の秒は小数点1位を四捨五入して整数にした
⇒ 原典では切り捨て関数(FIX)を使っているが、このままでは1秒の誤差が発生する場合があった
  まるめ関数を使用することにより、1秒の狂いが無くなった

計算結果

年月日
訪問時刻

checkJuliusDay.cgi // Topに戻る // indexに戻る
Copyright(C) since 2010 Grandmaster Last up : 2020/09/18