1月・2月は前年の13月・14月として扱う

目次
1月・2月は前年の13月・14月として扱う
1月・2月は前年の13月・14月として扱う
@ creator • Click to Play Video Inline
🎵 1月・2月は前年の13月・14月として扱う
ツェラーの公式で曜日を即特定!1月2月前年扱いの理由と暗算術

歴史的な出来事が起きた日や、自分の生まれた日が何曜日だったのか気になった経験はないでしょうか。カレンダーを何十年分もさかのぼることなく、たった1本の数式で過去から未来までの曜日を弾き出せる画期的なアルゴリズムが「ツェラーの公式」です。19世紀に考案されたこの計算式は、2026年現在のデジタル社会においてもシステム開発や暗算術のベースとして幅広く活用されています。

一見すると複雑な数式に見えますが、その背景には暦の周期性とうるう年の規則性を巧みに捉えた美しい数学的ロジックが隠されています。本記事では、ツェラーの公式の計算手順はもちろん、「なぜ1月と2月を前年として扱うのか」という核心的な謎、さらには実用的な暗算テクニックからPython・Excelでの実装方法まで余すところなく紐解いていきます。

📌 【この記事の重要ポイントまとめ】
  • 要点1:ツェラーの公式は、任意の年月日から曜日を瞬時に特定できる19世紀生まれの天才的計算アルゴリズム。
  • 要点2:1月・2月を「前年の13月・14月」とする最大の理由は、不規則なうるう年(2月末日)を計算の最後尾に追いやり、日数のズレを均等化するため。
  • 要点3:仕組みさえ理解すれば暗算に応用可能で、PythonやExcelを用いれば自作ツールへの組み込みも極めて簡単。

【基本解説】ツェラーの公式とは?考案者と曜日の求め方の全体像

ツェラーの公式(Zeller's congruence)とは、西暦の「年・月・日」の3つの数字を代入するだけで、その日が何曜日であるかを算出できる数学的な合同式です。この公式は、ドイツの数学者でありキリスト教神学者でもあったクリスチャン・ツェラー(Christian Zeller)が1882年に発表しました。

現在私たちが日常的に使っているグレゴリオ暦におけるツェラーの公式は、以下の形で表されます。

【ツェラーの公式(グレゴリオ暦)】
$h = \left( q + \left\lfloor \frac{13(m + 1)}{5} \right\rfloor + Y + \left\lfloor \frac{Y}{4} \right\rfloor + \left\lfloor \frac{C}{4} \right\rfloor - 2C \right) \bmod 7$

各大文字・小文字の意味は次の通りです。

  • $q$:日付(日)
  • $m$:月(※ただし、3月=3、4月=4、……、12月=12、1月=13、2月=14として計算)
  • $Y$:西暦年の下2桁(例:2026年なら $Y = 26$。1月・2月の場合は前年の下2桁)
  • $C$:西暦年の上2桁(例:2026年なら $C = 20$。1月・2月の場合は前年の上2桁)
  • $\lfloor x \rfloor$:床関数(ガウス記号)。小数点以下を切り捨てて最大の整数を求める操作
  • $\bmod 7$:全体を7で割ったときの「余り」を求める

計算結果として得られる $h$ の値(0〜6)が、そのまま特定の曜日に対応します。

  • $h = 0$:土曜日
  • $h = 1$:日曜日
  • $h = 2$:月曜日
  • $h = 3$:火曜日
  • $h = 4$:水曜日
  • $h = 5$:木曜日
  • $h = 6$:金曜日

【最大の謎を解剖】なぜ1月と2月は「前年の13月・14月」として計算するのか?

ツェラーの公式を学ぶ際、誰もが最初に疑問を抱くのが「なぜ1月と2月だけを前年の13月・14月として扱うのか」という点です。例えば「2026年2月10日」を計算する場合、年は「2025年」、月は「14月」として代入しなければなりません。

この一見奇妙なルールの裏には、数学的に極めて合理的でエレガントな2つの理由が存在します。

1. うるう年(2月29日)の影響を「年の末尾」に隔離するため

カレンダーにおける最大の日数変動要因は、4年に1度訪れる「うるう年(閏年)」の2月29日です。もし1年を1月から始まるものとして扱うと、年の序盤(2月末)に不規則な1日が挿入されるため、それ以降の3月〜12月の計算式すべてに「その年がうるう年かどうか」の条件分岐を組み込まなければならなくなります。

しかし、「1年の始まりを3月1日とし、1年の終わりを翌年の2月末日とする」という枠組みにシフトすると、うるう年の調整日は「1年の最後の日」になります。これによって、1年間の途中で日数の辻褄を合わせる必要がなくなり、公式全体を1つのシンプルな数式で統一できるのです。

2. 各月の日数パターン(大の月・小の月)を数式化するため

3月から翌年2月までの各月の日数を並べると、以下のようになります。

  • 3月(31日)、4月(30日)、5月(31日)、6月(30日)、7月(31日)
  • 8月(31日)、9月(30日)、10月(31日)、11月(30日)、12月(31日)
  • 1月(31日)、2月(28日または29日)

各月の日数を7で割った余り(翌月の開始曜日のズレ)に着目すると、「3, 2, 3, 2, 3」という5ヶ月周期の美しい規則性が現れます。この規則的な曜日の進み方を完璧にトレースするために生み出されたのが、公式内にある$\lfloor \frac{13(m + 1)}{5} \rfloor$という絶妙な分数です。

【数学的仕組み】床関数(ガウス記号)とうるう年補正のロジック

ツェラーの公式がなぜ正確に機能するのか、各項が担っている役割を分解すると、その仕組みが驚くほど明快に理解できます。

① $\lfloor \frac{13(m + 1)}{5} \rfloor$(月による曜日のズレ補正):
前述の通り、3月を起点とした場合の各大の月(31日)と小の月(30日)による曜日の前進を、$m$ に数値を代入するだけで自動計算します。係数「13/5 = 2.6」によって、月が進むごとに「3日進む月」と「2日進む月」が自動的に最適なペースで加算されます。

② $Y + \lfloor \frac{Y}{4} \rfloor$(通常の年経過とうるう年の加算):
通常年は365日なので、$365 \div 7 = 52$ あまり 1 となり、年が1つ進むごとに曜日は1日ずつ前進します($Y$ の項)。さらに4年に1度、うるう年によって曜日がもう1日進むため、床関数を用いて4年ごとのボーナス日を加算しています($\lfloor \frac{Y}{4} \rfloor$ の項)。

③ $- 2C + \lfloor \frac{C}{4} \rfloor$(グレゴリオ暦特有の100年・400年ルール補正):
グレゴリオ暦では、「100で割り切れる年は平年とし、400で割り切れる年はうるう年とする」というルールがあります。世紀($C$)をまたぐ際の日数の狂いを打ち消すために、この$-2C + \lfloor C/4 \rfloor$という項が精密なアジャスターとして機能しています。

これらすべての項を足し合わせ、1週間の周期である「7」で割った余りを取ることで、どんな過去・未来の日付であっても正確な曜日が導き出されるのです。

【実践ガイド】グレゴリオ暦とユリウス暦の違い&公式の使い分け

歴史上の記録を調査する際、注意しなければならないのが「グレゴリオ暦」と「ユリウス暦」の切り替えです。

現在世界中で使われているグレゴリオ暦が導入されたのは1582年10月15日(ローマ教皇グレゴリウス13世による改暦)です。それ以前の歴史的日付(またはロシアのように20世紀初頭までユリウス暦を採用していた地域の記録)を計算する場合は、ユリウス暦用のツェラーの公式を使用する必要があります。

【ツェラーの公式(ユリウス暦)】
$h = \left( q + \left\lfloor \frac{13(m + 1)}{5} \right\rfloor + Y + \left\lfloor \frac{Y}{4} \right\rfloor + 5 - C \right) \bmod 7$

ユリウス暦には「100年で平年、400年でうるう年」という例外規則が存在せず、「無条件に4年に1度うるう年」だったため、世紀補正の部分がグレゴリオ暦と異なっています。対象とする日付の時代背景に応じて、適切な式を選択することが正確な算出の鍵となります。

【日常で使える】ツェラーの公式を脳内で解く!プロ直伝の暗算テクニック

「公式の理屈は分かったけれど、さすがに暗算でこの式を解くのは無理がある」と感じる方も多いはずです。しかし、各パーツをあらかじめ定数化(モジュロ7の世界で単純化)しておくことで、数秒で曜日を言い当てる暗算が可能になります。

暗算ステップ1:世紀コード($C$)を覚える

グレゴリオ暦の世紀補正項は、西暦の上2桁ごとに一定の数値(0〜6)を取ります。

  • 1900年代($C=19$): 0
  • 2000年代($C=20$): 6(または -1)
  • 2100年代($C=21$): 4

暗算ステップ2:月コード($m$)を頭に入れる

$\lfloor \frac{13(m+1)}{5} \rfloor \bmod 7$ の値をあらかじめ暗記しておきます。

  • 3月:4、4月:0、5月:2、6月:5、7月:0、8月:3
  • 9月:6、10月:1、11月:4、12月:6、1月(13月):2、2月(14月):5

暗算ステップ3:年コード($Y + \lfloor Y/4 \rfloor$)を算出する

例えば「2026年」なら、$Y = 26$ です。
$26 + \lfloor 26/4 \rfloor = 26 + 6 = 32$
これを7で割った余りは $32 \div 7 = 4$ あまり 4 です。

実例:2026年10月17日の曜日を暗算してみる

  1. 日($q$): $17 \bmod 7 =$ 3
  2. 月コード(10月):1
  3. 年コード(2026年):4
  4. 世紀コード(2000年代):6

これらをすべて足すと、$3 + 1 + 4 + 6 = 14$ となります。
$14 \bmod 7 = 0$ なので、計算結果は 土曜日 です。カレンダーを確認すると、見事に一致していることが分かります。

【プログラミング&表計算】Python実装コードとExcelでの算出法

曜日計算のアルゴリズムは、日付処理ライブラリの内部実装や自作プログラムのロジック構築にも役立ちます。代表的な2つの環境での実装例を紹介します。

1. Pythonでの実装例

Pythonでは、負の数の剰余計算も言語仕様として数学的に正しく処理されるため、ツェラーの公式をそのまま素直に記述できます。

def get_day_of_week(year, month, day): if month < 3: month += 12 year -= 1 q = day m = month Y = year % 100 C = year // 100 # ツェラーの公式(グレゴリオ暦) h = (q + (13 * (m + 1)) // 5 + Y + Y // 4 + C // 4 - 2 * C) % 7 days = ["土", "日", "月", "火", "水", "木", "金"] return days[h] # 2026年5月5日の曜日を判定 print(get_day_of_week(2026, 5, 5)) # 出力: 火 

2. Excel(スプレッドシート)での算出式

Excelには標準でWEEKDAY関数が存在しますが、数学的な学習やセルの連動検証のためにツェラーの公式を関数として組み立てることも可能です。

セル A1 に「年」、B1 に「月」、C1 に「日」が入力されている場合、以下の数式でツェラーの公式を再現できます。

=MOD(C1 + INT((13 * (IF(B1<3, B1+12, B1) + 1)) / 5) + MOD(IF(B1<3, A1-1, A1), 100) + INT(MOD(IF(B1<3, A1-1, A1), 100) / 4) + INT(INT(IF(B1<3, A1-1, A1) / 100) / 4) - 2 * INT(IF(B1<3, A1-1, A1) / 100), 7) 

※戻り値は 0(土曜日)〜 6(金曜日)となります。

【ツェラーの公式】に関するよくある質問(FAQ)

Q1:計算結果の余りがマイナス(負の数)になった場合はどうすればいいですか?
A1:手計算や一部のプログラミング言語(C言語やJavaなど)では、剰余算の結果がマイナスになることがあります。その場合は、余りが 0〜6 の範囲に収まるまで「+7」を足してください(例:-2 の場合は $-2 + 7 = 5$ で「木曜日」となります)。

Q2:紀元前の日付や西暦1年以前の曜日もツェラーの公式で計算できますか?
A2:天文学的紀元(西暦0年、-1年……)を導入し、ユリウス暦用の公式を適切に拡張すれば原理的には可能です。ただし、歴史的には地域ごとに暦の運用ルールが異なっていたため、当時の社会的実態と一致するかどうかは歴史文献との照合が必要になります。

Q3:ツェラーの公式以外に有名な曜日計算アルゴリズムはありますか?
A3:ジョン・ホートン・コンウェイが考案した「ドゥームズデー・アルゴリズム(Doomsday rule)」や、コンピュータ処理に特化した「サカモト・アルゴリズム(Sakamoto's algorithm)」などが有名です。特にドゥームズデー法は、基準日(ドゥームズデー)からの日数差で求めるため、暗算の大会などで広く使われています。

まとめ:日付と数学が織りなす美学|アルゴリズムを日常の知性に

カレンダーという私たちが毎日当たり前のように眺めているツールには、太陽の運行と人類の知恵が積み重ねてきた緻密な数学のルールが埋め込まれています。クリスチャン・ツェラーが導き出した公式は、一見不規則に思える「月の日数」や「うるう年」のブレを見事な代数構造へと落とし込んだ傑作といえます。

1月・2月を前年として扱う合理性や、各項に込められたうるう年補正のロジックを知ると、単なる数式が極めて生き生きとした知恵の結晶に見えてくるはずです。記念日や歴史上の瞬間の曜日を自分の手や頭で導き出す楽しさを、ぜひ日々の生活やプログラミングの場で体験してみてください。 (出典: ツェラー の 公式(Yahoo!ニュース))

ツェラー の 公式
ツェラー の 公式
ツェラー の 公式