私が暦に携わるようになったのは平成8年(1996)のこと,同年4月1日のユリウス日は245 0175日で,以来ユリウス日といえば245 ****日であった.これが令和5年(2023)にはついに246 ****日となる.もちろん個人的感傷以外に特別なことは何もないが,よい機会なので今回はユリウス日について整理しておこう.
ユリウス日とは,ユリウス暦を−4712年1(紀元前4713年)1月1日まで遡って適用し,そこから数えた経過日数を指す.たとえば,起点である−4712年1月1日は0日,グレゴリオ暦の2000年1月1日は245 1545日となる.ユリウス日を使えば日付がどんな暦にもとづくのか悩む必要もなくなるし,連続的だから長期にわたる日数計算などにも都合がよい.
−4712年というのは中途半端に思われるだろうが,これは16世紀にフランスのスカリゲルが提案したユリウス周期2の起点にあたる.ユリウス周期とは,日付と曜日がそろう28年周期,日付と月の満ち欠けがほぼそろう19年周期,古代ローマの課税周期である15年周期をかけ合わせたもので,7980年 (=28×19×15) という長さの周期である.各周期の何年目かがわかればこの範囲内で一意に年を特定でき,すべての周期が1年目という年を探すと,それが−4712年となる.たいていの史実はこれより後であり,次の周期に入るのは3268年だから,年代学的には便利ということだろう.これをイギリスのジョン・ハーシェルが応用し,−4712年からの日数を数えるという概念や計算方法を紹介したことで,徐々に天文学者の間で広まっていった.
ユリウス日に小数をつけて時刻の情報を含めることもでき,その場合は−4712年1月1日正午を0.0日とした経過日数となる.正午を起点とするのは天体観測の途中で日付が変わらないようにした天文時の名残である.日本語ではあいまいだが,英語では,日数のみのものはJulian Day Number (JDN),時刻を含めたものはJulian Date (JD) という区別があり,後者はさらに時刻系も拡張してJD 245 1545.0 TT,JD 245 1545.0 UT1のような使い方もできる.
ユリウス日から派生した概念にもよく使われるものが多い.まず,2000年1月1日正午すなわちJD 245 1545.0はJ2000.0と表記され,あらゆる場面で基準時刻となっている.J2000.0はユリウス年 (JY) の表記法3であり,この時刻を基準に1年を一定の長さ365.25日 (= 1 jy) として年を数えることで,1年の日数が何日かというわずらわしさから解放される.たとえば,J2000.0から365.25日後はJ2001.0,36525日後はJ2100.0,年初はJ2023.0,年央はJ2023.5のように簡便かつ正確な表現が可能だ.さらに,J2000.0からの経過時間をユリウス世紀 (1 jc = 100 jy = 36525日) 単位で測ったものはユリウス世紀数Tと呼ばれ,歳差章動理論など,さまざまな理論で時刻引数として用いられている.
T = (JD − 245 1545) / 36525 = (JY − 2000) / 100
一方,ユリウス日は一般にとても大きな数となるうえ,正午が基準というわかりにくさもある.そこで,ユリウス日から240 0000.5を引いた修正ユリウス日(MJD)が使われることも多い.こちらは1858年11月17日正子を0.0日とした経過日数となっている.
MJD = JD − 240 0000.5
日付とユリウス日の変換には,暦象年表掲載の表などを用いるとよいだろう.たとえば,2023年7月5日のユリウス日は第1表(2000)から245 1545,第2表(23)から8400,第3表(平年,7月0日+5日)から186を求め,合計して246 0131日のようになる.この表で得られるのは日数のみの (正午の) ユリウス日であるが,0.5日を引けば正子の値も得られる.逆に,ユリウス日が246 0131日の場合は,各表からそれを超えない最大数を選んで引き算,すなわち第1表(245 1545)から2000年,第2表(8400)から23年,第3表(2023年は平年,181)から7月0日を得て,残る5日を加えて2023年7月5日となる.
紀元前の場合も同様であるが,第1表の使い方にコツがいる.ユリウス暦の導入された−44年(紀元前45年)1月1日を例にとると,まず −44 = −100 + 56 であるから,第1表(−100)から168 4533,第2表(56)から2 0453,第3表(−44年は閏年4,1月0日+1日)から1を求め,合計して170 4987日のようになる.
なお,この表では,1599年まではユリウス暦,1600年以後はグレゴリオ暦の日付に対するユリウス日が得られるようになっている.グレゴリオ暦の導入年は国によって異なるが,1500年代もグレゴリオ暦と結び付けたければ,第1表の値から10を引いて226 8923日を用いればよく,逆に1600年代もユリウス暦と結び付けたければ,第1表の値に10を加えて230 5458日を用いればよい.
表ではなく数式を用いる場合は,日付をY年M月D日,K ≡ [(14 − M) / 12],[ ]をガウス記号すなわち小数点以下を切捨てる演算子とすると,以下のようなアルゴリズムで変換できる.
JDN = [(−K + Y + 4800) × 1461 / 4]+ [(K × 12 + M − 2) × 367 / 12]− [[(−K + Y + 4900) / 100] × 3 / 4]+ D − 32075
L = JDN + 68569N = [4 × L / 146097]L = L − [(146097 × N + 3) / 4]I = [4000 × (L + 1) / 1461001]L = L − [1461 × I / 4] + 31J = [80 × L / 2447]D = L − [2447 × J / 80]L = [J / 11]M = J + 2 − 12 × LY = 100 × (N − 49) + I + L
JDN = [(−K + Y + 4800) × 1461 / 4]+ [(K × 12 + M − 2) × 367 / 12]+ D − 32113
L = JDN + 1402N = [(L − 1) / 1461]L = L − 1461 × NI = [(L − 1) / 365] − [L / 1461]L = L − 365 × I + 30J = [80 × L / 2447]D = L − [2447 × J / 80]L = [J / 11]M = J + 2 − 12 × LY = 4 × N + I + L − 4716
最後に,曜日や干支のように連続的に数えるものはユリウス日との相性がよいので,その関係も示しておこう.ここで mod は余りを求める演算子である.
曜日 = (JDN + 1) mod 7, ただし,0:日曜, 1:月曜, ・・・, 6:土曜干支 = (JDN + 49) mod 60, ただし,0:甲子, 1:乙丑, ・・・, 59:癸亥
1) 紀元1年の前年は0年ではなく,紀元前1年である.しかし,これでは数学的に扱いづらいので,紀元前1年を0年,紀元前2年を−1年・・・,紀元前4713年を−4712年のように扱っている. → 本文(1)に戻る
2) この名はユリウス暦の1年を基準としたことに由来する.詳しくは McCarthy, D.D., The Julian and Modified Julian Dates, Journal for the History of Astronomy , 29, 327 (1998) を参照. → 本文(2)に戻る
3) J2000.0の「J」はユリウス年であることを示している. → 本文(3)に戻る
4) 機械的にユリウス暦のルールを当てはめた場合.実際に−44年が閏年かは定かではない. → 本文(4)に戻る
暦象年表2023より