1. グレゴリオ暦・ユリウス暦
2. 起点日からの日数
3. フェアフィールドの公式
4. ツェラーの公式
5. 計算結果が合わないとき
6. h=0に日曜日を割り当てる
7. ユリウス暦
現在の標準的な暦法はグレゴリオ暦で,400年につき97回の閏年を置く。
1900年は平年,2000年は閏年,2100年は平年になる。
1901年から2099年までのおよそ200年間は,4年ごとに規則的に閏年が現れる。
1600年 | 閏年 | 1700年 | 平年 | 1800年 | 平年 | ||
1900年 | 平年 | 2000年 | 閏年 | 2100年 | 平年 |
グレゴリオ暦は1582年に制定され,ユリウス暦の1582年10月4日(木曜)の翌日をグレゴリオ暦の1582年10月15日(金曜)と定められた。
日本では明治6年から施行され,天保暦の明治5年(1872年)12月2日の翌日を新暦の明治6年(1873年)1月1日と定められた。
日付 | 曜日 | 暦法 |
1582年10月4日 | 木曜 | ユリウス暦 |
1582年10月15日 | 金曜 | グレゴリオ暦 |
ユリウス暦はグレゴリオ暦が制定される前に用いられていた暦法で,4年に1回の閏年を置く。
紀元前45年に制定されたが,初期の運用に誤りがあり,紀元8年以降に規則的な運用となった。
ユリウス暦では,100で割り切れる年はすべて閏年になる。
次のページへ
1. グレゴリオ暦・ユリウス暦
2. 起点日からの日数
3. フェアフィールドの公式
4. ツェラーの公式
5. 計算結果が合わないとき
6. h=0に日曜日を割り当てる
7. ユリウス暦
0年3月1日(紀元前1年3月1日)の時点でグレゴリオ暦は制定されていなかったが,ここではグレゴリオ暦の規則を過去にさかのぼって定めた日付を考える。
0年3月1日を0日目として,Y年3月1日が何日目にあたるかを調べる。
平年の1年は365日あるが,閏年では3月1日の前に1日挿入されて366日になる。
Y=400 のとき,1年からの400年までの400年間に,4で割り切れる年が Y/4=100 回あるから,閏年(の候補)が100回ある。
100回の閏年のうち,100で割り切れる年が Y/100=4 回あるから,4回を取り消し,
取り消した4回のうち,400で割り切れる年が Y/400=1 回あるから,1回を復活させると,400年につき97回の閏年が現れる。
0年3月1日からY年3月1日までの日数は,次のとおり。 \[ 365Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor \tag{1} \] ここで,記号 ⌊ ⌋ は1に満たない端数を切り捨てる関数を表す。
3月から翌年2月までの各月の日数は,31,30,31,30,31 の繰り返しになっている。
2月が不規則なので,他の月に影響が出ないように最後に回すことにする。
1月,2月は,前年の13月,14月と見なす。
月 | 3月 | 4月 | 5月 | 6月 | 7月 |
日数 | 31 | 30 | 31 | 30 | 31 |
月 | 8月 | 9月 | 10月 | 11月 | 12月 |
日数 | 31 | 30 | 31 | 30 | 31 |
月 | 13月 | 14月 | |||
日数 | 31 | 28 |
3月1日を0日目とすると,4月1日は31日目, … ,8月1日は153日目になる。
5か月で153日あり,5か月を周期にこれが繰り返される。
月 | 3月1日 | 4月1日 | 5月1日 | 6月1日 | 7月1日 | 8月1日 |
日数 | 31 | 30 | 31 | 30 | 31 | |
累計 | 0 | 31 | 61 | 92 | 122 | 153 |
3月1日を0日目として,各月1日の日数が 0,31,61,92,122,… となるような計算式を見つける。
5か月で153日あるので,1か月当たり 153/5=30.6 日になる。調整項 c をつけて仮に次のように設定する。
\[
\left \lfloor \frac{153(M-3)+c}{5}\right \rfloor
\]
日数がうまく求められるように c を調整していく。
3月1日が 0 日目になるような c の範囲は 0≤c<5,
4月1日が 31 日目になるような c の範囲は 2≤c<7,
5月1日が 61 日目になるような c の範囲は −1≤c<4,
6月1日が 92 日目になるような c の範囲は 1≤c<6,
7月1日が 122 日目になるような c の範囲は −2≤c<3 になる。
すべてうまく求められる c の範囲は 2≤c<3 であり,整数なら c=2 に決まる。
各年の3月1日を0日目として,同年のM月1日が何日目にあたるかを調べる。
上のことから,3月1日からM月1日までの日数は,
\[
\left \lfloor \frac{153(M-3)+2}{5}\right \rfloor
\]
であるが,よく使われる形に変形しておく。
\[
\left \lfloor \frac{153(M-3)+2}{5}\right \rfloor =\left \lfloor \frac{153(M+1)-612+2}{5}\right \rfloor =\left \lfloor \frac{153(M+1)}{5}\right \rfloor -122
\]
3月1日からM月1日までの日数は,次のとおり。
\[
\left \lfloor \frac{153(M+1)}{5}\right \rfloor -122
\tag{2}
\]
30.6(M+1) を切り捨てる方法のほか,30.6(M−3) を四捨五入,または 30.6(M−2) を切り上げることによっても,月間の日数を求めるられる。
\[
\lfloor 30.6(M+1)\rfloor -122
=\lfloor 30.6(M-3)+0.5\rfloor
=\lceil 30.6(M-2)\rceil -31
\]
各年各月の1日(ついたち)を0日目とすると,同年同月のD日は D−1 日目になる。 \[ D-1 \tag{3} \]
次のページへ
1. グレゴリオ暦・ユリウス暦
2. 起点日からの日数
3. フェアフィールドの公式
4. ツェラーの公式
5. 計算結果が合わないとき
6. h=0に日曜日を割り当てる
7. ユリウス暦
0年3月1日を0日目として,Y年M月D日までの日数を求めるためには,前ページで求めた公式を加えればよい。 \[ 365Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor +\left \lfloor \frac{153(M+1)}{5}\right \rfloor +D-123 \]
3月1日を0日目とすると,翌年の1月1日(13月1日)までの日数は 306 日になる。
\[
\left \lfloor \frac{153(M+1)}{5}\right \rfloor -122=\left \lfloor \frac{153(13+1)}{5}\right \rfloor -122=306
\]
1年1月1日を1日目として,Y年M月D日が何日目にあたるかを求める公式のことをフェアフィールドの公式
という。
次の式で求められる。
\[
365Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor
+\left \lfloor \frac{153(M+1)}{5}\right \rfloor +D-123-305
\]
1月,2月を前年の13月,14月に置き換えた日付を Y年M月D日 とすると,
フェアフィールドの公式は次のようになる。
\[
365Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor
+\left \lfloor \frac{153(M+1)}{5}\right \rfloor
+D-428
\tag{1}
\]
Y を100で割った商を J とし,Y を100で割った余りを K とする。
\[
J=\left \lfloor \frac{Y}{100}\right \rfloor,\qquad K=Y\mathop{\%}100,\qquad Y=100J+K
\]
ここで,⌊ ⌋ は1に満たない端数を切り捨てる関数,Y%100 は Y を100で割った余りを表す。
⌊Y/4⌋ を J と K に置き換える。
\[
\left \lfloor \frac{Y}{4}\right \rfloor =\left \lfloor \frac{100J+K}{4}\right \rfloor =25J+\left \lfloor \frac{K}{4}\right \rfloor
\]
⌊Y/100⌋ を J と K に置き換える。0≤K≤99 なので,⌊k/100⌋=0 になる。
\[
\left \lfloor \frac{Y}{100}\right \rfloor =\left \lfloor \frac{100J+K}{100}\right \rfloor =J+\left \lfloor \frac{K}{100}\right \rfloor =J
\]
⌊Y/400⌋ を J と K に置き換える。400=4×100 なので,二段階で切り捨ててもよい。
\[
\left \lfloor \frac{Y}{400}\right \rfloor =\left \lfloor \frac{1}{4}\left \lfloor \frac{Y}{100}\right \rfloor \right \rfloor =\left \lfloor \frac{J}{4}\right \rfloor
\]
フェアフィールドの公式(1)で,Y の部分を J と K に置き換える。 \[ 365(100J+K)+25J+\left \lfloor \frac{K}{4}\right \rfloor -J+\left \lfloor \frac{J}{4}\right \rfloor +\left \lfloor \frac{153(M+1)}{5}\right \rfloor +D-428 \] フェアフィールドの公式は,次の形で表すこともできる。 \[ 365K+\left \lfloor \frac{K}{4}\right \rfloor +\left \lfloor \frac{J}{4}\right \rfloor +36524J +\left \lfloor \frac{153(M+1)}{5}\right \rfloor +D-428 \tag{2} \]
フェアフィールドの公式とほぼ同等なフリーゲルの公式
とよばれるものもある。
フリーゲルの公式はユリウス日や修正ユリウス日(1858年11月17日からの日数)を求めるための公式である。
0年3月1日を0日目として,Y年M月D日までの日数を次の形で表す。
\[
365Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor
+\left \lfloor \frac{153(M-3)+2}{5}\right \rfloor +D-1
\]
Y の最初の2項は,1項にまとめられる。
\[
365Y+\left \lfloor \frac{Y}{4}\right \rfloor
=\left \lfloor \frac{1461Y}{4}\right \rfloor
=\lfloor 365.25Y\rfloor
\]
M の項は 2≤c<3 の範囲の c で成立するから,30.6(M−3) の四捨五入でもよい。
\[
\left \lfloor \frac{153(M-3)+c}{5}\right \rfloor
=\left \lfloor 30.6(M-3)+\frac{c}{5}\right \rfloor
=\lfloor 30.6(M-3)+0.5\rfloor
\]
あるいは,M の項を少し変形し,
\[
\left \lfloor \frac{153(M-3)+2}{5}\right \rfloor
=\left \lfloor \frac{153(M-2)-1}{5}\right \rfloor -30
=\lfloor 30.6(M-2)-0.2\rfloor -30
\]
−0.2 の代わりに,係数 30.6 をわずかに減らしても結果は変わらない。
\[
\lfloor 30.6(M-2)-0.2\rfloor -30
=\lfloor 30.59(M-2)\rfloor -30
\]
フリーゲルの公式は,次のいずれかの形で表される。
678882 や 678912 は起点日を1858年11月17日に移動するための補正である。
\begin{align}
&\lfloor 365.25Y\rfloor +\lfloor Y/400\rfloor -\lfloor Y/100\rfloor
+\lfloor 30.6(M-3)+0.5\rfloor +D-678882
\tag{3}\\
&\lfloor 365.25Y\rfloor +\lfloor Y/400\rfloor -\lfloor Y/100\rfloor
+\lfloor 30.59(M-2)\rfloor +D-678912
\tag{4}
\end{align}
0.5を加えて切り捨てると四捨五入になるため,⌊30.6(M−3)+0.5⌋ は 30.6(M−3) の四捨五入を表す。
次のページへ
1. グレゴリオ暦・ユリウス暦
2. 起点日からの日数
3. フェアフィールドの公式
4. ツェラーの公式
5. 計算結果が合わないとき
6. h=0に日曜日を割り当てる
7. ユリウス暦
起点日からの日数を7で割った余りが同じになる日付は,同じ曜日になる。 起点日からの日数はフェアフィールドの公式で求められるが,起点日が1年1月1日になっている。
周期性を考慮すると,起点日は0年3月1日のほうが自然なので,ここでは起点日を0年3月1日とする。
0年3月1日の曜日を W とおき,0年3月1日からの日数を7で割った余りを h とする。
\[
h=\left(365Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor
+\left \lfloor \frac{153(M+1)}{5}\right \rfloor +D-123+W\right)\mathop{\%}7
\]
上の 365Y から,7の倍数の部分を切り離しておく。 \[ 365Y=(7\times 52+1)Y=Y+7\times 52Y \] −123 も,7の倍数を切り離す。 \[ -123=3-7\times 18 \] 整数を加えてから切り捨てても,切り捨ててから整数を加えても結果は変わらない。 それを利用して上の M の項から,7の倍数を切り離す。 \begin{align} \left \lfloor \frac{153(M+1)}{5}\right \rfloor &=\left \lfloor \frac{(35\times 4+13)(M+1)}{5}\right \rfloor\\ &=\left \lfloor \frac{13(M+1)}{5}+7\times 4(M+1)\right \rfloor\\ &=\left \lfloor \frac{13(M+1)}{5}\right \rfloor +7\times 4(M+1) \end{align}
7で割ったときの余りは,7の倍数を取り去ってから7で割っても変わらない。
365Y を Y に置き換え,⌊(153(M−3)+2)/5⌋ を ⌊13(M+1)/5⌋+4 に置き換え,−123 を 3 に置き換えると,h は次のように簡単にできる。
\[
h=\left(Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor
+\left \lfloor \frac{13(M+1)}{5}\right \rfloor
+D+W+3\right)\mathop{\%}7
\]
1582年10月15日は金曜日である。Y=1582,M=10,D=15 のときの h は
\begin{align}
h&=\left(1582+\left \lfloor \frac{1582}{4}\right \rfloor -\left \lfloor \frac{1582}{100}\right \rfloor +\left \lfloor \frac{1582}{400}\right \rfloor
+\left \lfloor \frac{13(10+1)}{5}\right \rfloor
+15+W+3\right)\mathop{\%}7\\
&=(1582+395-15+3+28+15+W+3)\mathop{\%}7\\
&=(W+2011)\mathop{\%}7\\
&=(W+2)\mathop{\%}7
\end{align}
1582年10月15日が金曜日なので,0年3月1日は水曜日になる。
W=3(水曜は h=3)とおくと,h=0 が日曜日に,
W=4(水曜は h=4)とおくと,h=0 が土曜日に割り当てられる。
1月,2月を前年の13月,14月に置き換えた日付を Y年M月D日 とする。
h の値から曜日が分かる。
\[
h=\left(Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor
+\left \lfloor \frac{13(M+1)}{5}\right \rfloor
+D\right)\mathop{\%}7
\tag{1}
\]
h=0 | h=1 | h=2 | h=3 | h=4 | h=5 | h=6 |
土曜日 | 日曜日 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 |
ツェラーの公式(1)で,Y の部分を J と K に置き換える。 \[ h=\left(100J+K+25J+\left \lfloor \frac{K}{4}\right \rfloor -J+\left \lfloor \frac{J}{4}\right \rfloor +\left \lfloor \frac{13(M+1)}{5}\right \rfloor +D\right)\mathop{\%}7 \] 100J+25J−J = 124J を7で割ったときの余りは −2J または 5J なので,ツェラーの公式は次の形で表すこともできる。 \begin{align} h &=\left(K+\left \lfloor \frac{K}{4}\right \rfloor +\left \lfloor \frac{J}{4}\right \rfloor -2J +\left \lfloor \frac{13(M+1)}{5}\right \rfloor +D\right)\mathop{\%}7 \tag{2}\\ h &=\left(K+\left \lfloor \frac{K}{4}\right \rfloor +\left \lfloor \frac{J}{4}\right \rfloor +5J +\left \lfloor \frac{13(M+1)}{5}\right \rfloor +D\right)\mathop{\%}7 \tag{3} \end{align}
h=0 | h=1 | h=2 | h=3 | h=4 | h=5 | h=6 |
土曜日 | 日曜日 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 |
※ J,K のかわりに,H,Y 等が用いられることもある。
次のページへ
1. グレゴリオ暦・ユリウス暦
2. 起点日からの日数
3. フェアフィールドの公式
4. ツェラーの公式
5. 計算結果が合わないとき
6. h=0に日曜日を割り当てる
7. ユリウス暦
1月,2月を前年の13月,14月に置き換えた日付を Y年M月D日 とする。
h=0 に土曜日が割り当てられているツェラーの公式
のうち,よく知られているものは次のとおり。
\begin{align}
h &=\left(Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor
+\left \lfloor \frac{13(M+1)}{5}\right \rfloor
+D\right)\mathop{\%}7
\tag{1}\\
h &=\left(K+\left \lfloor \frac{K}{4}\right \rfloor +\left \lfloor \frac{J}{4}\right \rfloor -2J
+\left \lfloor \frac{13(M+1)}{5}\right \rfloor
+D\right)\mathop{\%}7
\tag{2}\\
h &=\left(K+\left \lfloor \frac{K}{4}\right \rfloor +\left \lfloor \frac{J}{4}\right \rfloor +5J
+\left \lfloor \frac{13(M+1)}{5}\right \rfloor
+D\right)\mathop{\%}7
\tag{3}
\end{align}
h=0 | h=1 | h=2 | h=3 | h=4 | h=5 | h=6 |
土曜日 | 日曜日 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 |
A を B で割ったときの商や余りには,複数の決め方がある。
ツェラーの公式では TYPE B の除法を使う必要がある。 B>0 とし,TYPE B の方法で A を B で割ったときの商 Q と余り R は次の式を満たすように決められる。 \[ Q=\left \lfloor \frac{A}{B}\right \rfloor ,\qquad 0\leq R\lt B,\qquad A=BQ+R \]
|
|
TYPE B で (−9)÷4 を求めると,−9=−3×4+3 だから,商は ⌊−9/4⌋=−3 になる。
TYPE B で (−9)÷7 を求めると,−9=−2×7+5 だから,余りは −9%7=5 になる。
例: 1900年3月1日に対して,ツェラーの公式(2)に Y=1900,M=3,D=1 と J=19,K=0 を当てはめる。 \begin{align} h &=\left(0+\left \lfloor \frac{0}{4}\right \rfloor +\left \lfloor \frac{19}{4}\right \rfloor -2\times 19+\left \lfloor \frac{13(3+1)}{5}\right \rfloor +1\right)\mathop{\%}7\\ &=(0+0+4-2\times 19+10+1)\mathop{\%}7\\ &=(-23)\mathop{\%}7=5 \end{align} 1900年3月1日は木曜日である。
1900年3月1日~1918年3月1日 あるいは 2000年3月1日~2019年3月1日 の日付に対してツェラーの公式(2)を用いると,−2J の影響で,負の数の除算が現れることがある。
公式(2)のかわりに公式(3)を用いれば,負の数の除算は現れない。
紀元前の日付に対しても,ツェラーの公式を使って曜日を求めることができる。
ただし日付は,グレゴリオ暦の規則を過去にさかのぼって定めたものとする。
紀元前1年は Y=0,紀元前2年は Y=−1,紀元前3年は Y=−2,… としてツェラーの公式に当てはめる。
例: 紀元前123年4月5日に対して,ツェラーの公式(1)に Y=−122,M=4,D=5 を当てはめる。
正の数は切り捨て,負の数は見かけ上,切り上げになる。
\begin{align}
h &=\left(-122+\left \lfloor \frac{-122}{4}\right \rfloor -\left \lfloor \frac{-122}{100}\right \rfloor +\left \lfloor \frac{-122}{400}\right \rfloor +\left \lfloor \frac{13(4+1)}{5}\right \rfloor +5\right)\mathop{\%}7\\
&=((-122)+(-31)-(-2)+(-1)+13+5)\mathop{\%}7\\
&=(-134)\mathop{\%}7=6
\end{align}
紀元前123年4月5日は金曜日である。
例: 紀元前123年4月5日に対して,ツェラーの公式(2)に Y=−122,M=4,D=5 と J=−2,K=78 を当てはめる。 \[ J=\left \lfloor \frac{-122}{100}\right \rfloor =-2,\qquad K=(-122)\mathop{\%}100=78 \] 公式(2)は 0≤K≤99 を前提として作られているので,J=−1,K=−22 としてはいけない。 \begin{align} h &=\left(78+\left \lfloor \frac{78}{4}\right \rfloor +\left \lfloor \frac{-2}{4}\right \rfloor -2\times (-2)+\left \lfloor \frac{13(4+1)}{5}\right \rfloor +5\right)\mathop{\%}7\\ &=(78+19+(-1)-2\times (-2)+13+5)\mathop{\%}7\\ &=118\mathop{\%}7=6 \end{align} 紀元前123年4月5日は金曜日である。
負の数を含む除算は非常に間違えやすい。
プログラミングをして,ツェラーの公式を組み込めば楽に計算できるようになるはずだが,うまくいかないこともある。
プログラミング言語に定義されている除法は TYPE A であることが多く,その場合はツェラーの公式の自動化が困難になる。
手計算の場合でも,頻繁に間違えたり,計算に時間がかかってしまう。
しかし,暦の周期性を利用すれば,負の数を回避できることが期待される。
グレゴリオ暦では,400年につき97回の閏年があるので,400年間で146097日ある。
\[
365\times 400+97=146097=7\times 20871
\]
400年間の日数は7の倍数になっているから,400年前または400年後の同じ日付は,同じ曜日になる。
Y年に400年を足したり引いたりして 0年3月1日~399年14月29日 の日付に置き換えれば,負の数の除算は現れない。
例: 1900年3月1日を調べるかわりに,その4×400年前の300年3月1日を調べてもよい。
ツェラーの公式(2)に Y=300,M=3,D=1 と J=3,K=0 を当てはめる。
\begin{align}
h &=\left(0+\left \lfloor \frac{0}{4}\right \rfloor +\left \lfloor \frac{3}{4}\right \rfloor -2\times 3+\left \lfloor \frac{13(3+1)}{5}\right \rfloor +1\right)\mathop{\%}7\\
&=(0+0+0-2\times 3+10+1)\mathop{\%}7\\
&=5\mathop{\%}7=5
\end{align}
300年3月1日は木曜日だから,1900年3月1日も木曜日である。
例: 紀元前123年4月5日を調べるかわりに,その400年後の278年4月5日を調べてもよい。
ツェラーの公式(1)に Y=278,M=4,D=5 を当てはめる。
\begin{align}
h &=\left(278+\left \lfloor \frac{278}{4}\right \rfloor -\left \lfloor \frac{278}{100}\right \rfloor +\left \lfloor \frac{278}{400}\right \rfloor +\left \lfloor \frac{13(4+1)}{5}\right \rfloor +5\right)\mathop{\%}7\\
&=(278+69-2+0+13+5)\mathop{\%}7\\
&=363\mathop{\%}7=6
\end{align}
278年4月5日は金曜日だから,紀元前123年4月5日も金曜日である。
SET コマンドを使ったサンプルを示す。強調部分で負の数による不具合を修正している。
Y=1582,M=10,D=15 を入力すると,W=6(金曜日)が返される。
@echo off
setlocal
set /p Y=Y=
set /p M=M=
set /p D=D=
set /a "Y|=0", "M|=0", "D|=0"
echo Y=%Y%, M=%M%, D=%D%
if %M% lss 3 set /a M+=12, Y−=1
set /a Y%%=400
if %Y% lss 0 set /a Y+=400
set /a J=Y/100, K=Y%%100
set /a W=(K+K/4+J/4+J∗5+(M+1)∗13/5+D)%%7
echo W=%W%
echo 0:Sat, 1:Sun, 2:Mon, 3:Tue, 4:Wed, 5:Thu, 6:Fri
次のページへ
1. グレゴリオ暦・ユリウス暦
2. 起点日からの日数
3. フェアフィールドの公式
4. ツェラーの公式
5. 計算結果が合わないとき
6. h=0に日曜日を割り当てる
7. ユリウス暦
前ページまでのツェラーの公式では,日曜日が h=1 になっていたが,日曜日は h=0 のほうが都合がよい場合もある。 前ページの公式から1を引くと,h=0 に日曜日を割り当てられる。 \[ h=\left(Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor +\left \lfloor \frac{13(M+1)}{5}\right \rfloor +D-1\right)\mathop{\%}7 \] このままでもよいが,M の項から1を引いておく。 \[ \left \lfloor \frac{13(M+1)}{5}\right \rfloor -1 =\left \lfloor \frac{13(M+1)}{5}-1\right \rfloor =\left \lfloor \frac{13M+8}{5}\right \rfloor \]
1月,2月を前年の13月,14月に置き換えた日付を Y年M月D日 とする。
h=0 に日曜日が割り当てられているツェラーの公式
のうち,よく知られているものは次のとおり。
\begin{align}
h &=\left(Y+\left \lfloor \frac{Y}{4}\right \rfloor -\left \lfloor \frac{Y}{100}\right \rfloor +\left \lfloor \frac{Y}{400}\right \rfloor
+\left \lfloor \frac{13M+8}{5}\right \rfloor
+D\right)\mathop{\%}7
\tag{1}\\
h &=\left(K+\left \lfloor \frac{K}{4}\right \rfloor +\left \lfloor \frac{J}{4}\right \rfloor -2J
+\left \lfloor \frac{13M+8}{5}\right \rfloor
+D\right)\mathop{\%}7
\tag{2}\\
h &=\left(K+\left \lfloor \frac{K}{4}\right \rfloor +\left \lfloor \frac{J}{4}\right \rfloor +5J
+\left \lfloor \frac{13M+8}{5}\right \rfloor
+D\right)\mathop{\%}7
\tag{3}
\end{align}
h=0 | h=1 | h=2 | h=3 | h=4 | h=5 | h=6 |
日曜日 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 | 土曜日 |
次のページへ
1. グレゴリオ暦・ユリウス暦
2. 起点日からの日数
3. フェアフィールドの公式
4. ツェラーの公式
5. 計算結果が合わないとき
6. h=0に日曜日を割り当てる
7. ユリウス暦
ユリウス暦の場合もグレゴリオ暦と同様である。
1月,2月を前年の13月,14月に置き換えた日付をY年M月D日とする。
ユリウス暦の0年3月1日を0日目として,Y年M月D日が何日目にあたるかを求める。
4で割り切れる年は閏年になる。
\[
365Y+\left \lfloor \frac{Y}{4}\right \rfloor +\left \lfloor \frac{153(M+1)}{5}\right \rfloor +D-123
\]
0年3月1日の曜日を W とおき,0年3月1日からの日数を7で割った余りを h とする。
\begin{align}
h &=\left(365Y+\left \lfloor \frac{Y}{4}\right \rfloor +\left \lfloor \frac{153(M+1)}{5}\right \rfloor +D-123+W\right)\mathop{\%}7\\
&=\left(Y+\left \lfloor \frac{Y}{4}\right \rfloor +\left \lfloor \frac{13(M+1)}{5}\right \rfloor +D+W+3\right)\mathop{\%}7
\end{align}
1582年10月4日は木曜日である。Y=1582,M=10,D=4 のときの h は
\begin{align}
h&=\left(1582+\left \lfloor \frac{1582}{4}\right \rfloor +\left \lfloor \frac{13(10+1)}{5}\right \rfloor +4+W+3\right)\mathop{\%}7\\
&=(1582+395+28+4+W+3)\mathop{\%}7\\
&=(W+2012)\mathop{\%}7\\
&=(W+3)\mathop{\%}7
\end{align}
1582年10月4日が木曜日なので,0年3月1日は月曜日になる。
W=1(月曜は h=1)とおくと,h=0 が日曜日に,
W=2(月曜は h=2)とおくと,h=0 が土曜日に割り当てられる。
1月,2月を前年の13月,14月に置き換えた日付を Y年M月D日 とする。
ユリウス暦で h=0 に土曜日が割り当てられるツェラーの公式
は次のとおり。
\begin{align}
h &=\left(Y+\left \lfloor \frac{Y}{4}\right \rfloor
+\left \lfloor \frac{13M+3}{5}\right \rfloor +D\right)\mathop{\%}7
\tag{1}\\
h &=\left(K+\left \lfloor \frac{K}{4}\right \rfloor +6J
+\left \lfloor \frac{13M+3}{5}\right \rfloor +D\right)\mathop{\%}7
\tag{2}
\end{align}
h=0 | h=1 | h=2 | h=3 | h=4 | h=5 | h=6 |
土曜日 | 日曜日 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 |
1月,2月を前年の13月,14月に置き換えた日付を Y年M月D日 とする。
ユリウス暦で h=0 に日曜日が割り当てられるツェラーの公式
は次のとおり。
\begin{align}
h &=\left(Y+\left \lfloor \frac{Y}{4}\right \rfloor
+\left \lfloor \frac{13M-2}{5}\right \rfloor +D\right)\mathop{\%}7
\tag{1}\\
h &=\left(K+\left \lfloor \frac{K}{4}\right \rfloor +6J
+\left \lfloor \frac{13M-2}{5}\right \rfloor +D\right)\mathop{\%}7
\tag{2}\\
\end{align}
h=0 | h=1 | h=2 | h=3 | h=4 | h=5 | h=6 |
日曜日 | 月曜日 | 火曜日 | 水曜日 | 木曜日 | 金曜日 | 土曜日 |
最後のページです
2015.11.8 作成 / 2021.2.3 更新
Home › ツェラーの公式