△△年○月□日が何曜日を計算するには、基準の日から何日後(ずれている)かを調べれば良い、という計算方法を自分なりに解釈してみたので、TLに垂れ流すよ!の巻
2010-03-02 03:04:21・曜日は1週間(7日)サイクルである。月曜日の1日後は火曜日、10日後は10÷7=1…3であるので、月曜日の3曜日後である木曜日にあたる。7日のサイクルからはみ出した分を加算すれば、基準の曜日からいくつ後の曜日かがわかる
2010-03-02 03:04:59・前述の考え方から、1月1日が金曜であるとき、2月1日は31日後であるので、31÷7=4…3で、金曜の3曜日後の月曜となることがわかる。しかし月の日数はまちまち(2月は28日、4,6,9,11月は30日、他は31日)であるので、月ごとに計算する値を変える・補正する必要がある
2010-03-02 03:05:26・また、1年は365日である。365÷7=52…1と考えると1年後の同じ日は、1曜日後になる。(2010/1/1が金曜ならば、2011/1/1は土曜日)
2010-03-02 03:06:09・しかしうるう年(4の倍数ごとの年)がある。これにより、2004/1/1は木曜であるがうるう年なので、翌年の2005/1/1は1曜日ずれた金曜ではなく、2曜日ずれた土曜となる
2010-03-02 03:06:43・以上から、00年1月1日を基準としたところから曜日を計算するには、(1)年、(2)月、(3)日を足したものを7で割り、あまりの数がわかれば曜日が判明する。しかし前述でうるう年と月の日数のばらばらさを示したので、たんに年月日を足すのではなく、補正しなければならないことがわかる
2010-03-02 03:07:05・また、うるう年は4倍数の年毎だが1100年、1200年など00年はうるう年ではないとされる。しかし400の倍数年(2000年など)はうるう年とされる。よって100年ごとに補正する。
2010-03-02 03:07:33・1900年の100年前は-(100曜日+24(うるう年の回数))÷7=-17…-5だから、5曜日前として補正する。100年後の2000年は+(100+24+1)÷7=17…6だから6曜日後として補正する
2010-03-02 03:07:58・①百年単位の補正 1800/1/1~1899/12/31は2:1900/1/1~1999/12/31は0:2000/1/1~2099/12/31は6を補正値として加算する
2010-03-02 03:08:47・②うるう日分の加算 求めたい年の下二桁÷4で出た商(1922年なら、22÷4=5…2だから5のこと。5回うるう日があったためその分)を加算する
2010-03-02 03:09:01・③月の補正 1月を1とし、2月は4:3月は4:4月は0:5月は2:6月は5:7月は0:8月は3:9月は6:10月は1:11月は4:12月は6を補正値として加算。ただし、うるう年の1月は0、2月は3で補正する(2/29のずれ分を商で加算したけれど1月と2月はまだずれていないため)
2010-03-02 03:09:53よって、求めたい年月日(西暦)の曜日を求めるには、(「求めたい年の補正値①」+「求めたい年の下二桁」+「その二桁を4で割った商②」+「求めたい月の補正値③」+「求めたい日」)÷7を計算し、あまりの数を次の表④から探せば良い
2010-03-02 03:10:331992年7月19日は(0+92+23+0+19)÷7=19…1だから、あまり1は表④より日曜。1992年7月19日は、日曜日でした…!
2010-03-02 03:11:01