曜日の算出


関数名
dayOfWeek  西暦年月日からその曜日を算出する
形式
int dayOfWeek(int year, int month, int day);
引数
year   西暦で表される年号
month  月の値 (1 〜 12)
day    日の値
関数値
曜日に対応する 0 〜 6 の値
    0: 日、1: 月、2: 火、3: 水、4: 木、5: 金、6: 土
注意事項
・引数として渡される西暦年月日が実在するかどうかは
本関数内ではチェックしない。
・1582年10月15日以降の日についてのみ正しく算出できる。

用例(dayOfWeek-test.c
dayOfWeek(1996, 6, 6);

プログラム(dayOfWeek.c
int dayOfWeek(int year, int month, int day){
    if (month == 1 || month == 2) {
        year--;
        month += 12;
    }
    return (year + year/4 - year/100 + year/400 + (13*month+8)/5 + day) % 7;
}
説明
ツェラー (Zeller) の公式による計算法。

現在使われているグレゴリオ暦の初日は1582年10月15日(金曜日)である。 本関数はその日以降の曜日を正しく算出する。

ちなみに、1582年10月15日の前日はなんと、ユリウス暦1582年10月4日 (木曜日)である。

関連関数
閏年の判定