このツールでできること
「日数の加算・減算計算ツール」は、任意の基準日から指定した日数だけ前後した日付を正確に割り出します。「今日から90日後は何日?」「45日前は何日だった?」といった疑問に、曜日まで含めてすぐに答えを返します。グレゴリオ暦のあらゆる日付に対応し、各月の日数の違い、うるう年、年をまたぐ計算もすべて正しく処理します。
使い方
基準日(年・月・日)を入力し、加算するか減算するかを選び、日数を入力するだけです。結果は YYYY-MM-DD 形式の日付と曜日で表示されます。標準のグレゴリオ暦に基づくため特定の国や暦に依存せず、世界中どこでも使える汎用的な日付計算ツールです。
計算の仕組み
このツールは、月ごとに異なる日数やうるう年をそのまま扱う代わりに、基準日をいったんユリウス通日(JDN:Julian Day Number)へ変換します。JDNは日数を連続した整数で数えたものなので、N日の加減算は単純な足し算・引き算で済みます:
$$\text{JDN}_{out} = \text{JDN}(\text{基準日}) \pm N$$JDNは次の式で求められます:
$$\text{JDN} = d + \left\lfloor\frac{153m+2}{5}\right\rfloor + 365y + \left\lfloor\frac{y}{4}\right\rfloor - \left\lfloor\frac{y}{100}\right\rfloor + \left\lfloor\frac{y}{400}\right\rfloor - 32045$$その結果を再び年・月・日に変換し、曜日は \(\text{JDN} \bmod 7\) から求めます。この方式は完全に正確で、1日ずつ数えるような単純なループで起こりがちな誤差を回避できます。
計算例
基準日を 2024-01-01 として 30日 を加算してみましょう。2024-01-01 の JDN は 2,460,311 です。これに 30 を足すと
$$2{,}460{,}311 + 30 = 2{,}460{,}341$$となり、変換し直すと 2024-01-31 になります。2024年はうるう年ですが、1月は31日まであるため計算は問題なく処理されます。さらにもう1日(合計31日)足すと、2024-02-01 へ繰り越されます。
主要用語の説明
- ユリウス日数(JDN)
- 紀元前4713年1月1日正午(協定世界時、プロレプティック・ユリウス暦)から続く通日の整数カウント。すべての暦日付は単一の整数にマッピングされるため、日数の加減算は単純な整数演算になります:日付をJDNに変換し、オフセットを加減算してから、戻します。これにより月の長さと閏年を手作業で処理する必要がなくなります。
- グレゴリオ暦
- 現在世界中で使用されている市民暦で、1582年にローマ教皇グレゴリウス13世が導入しました。365日の年を定義し、特定のルールの下で閏日を追加して、平均年長を365.2425日にし、太陽年をよく追跡します。
- プロレプティック・グレゴリオ暦
- グレゴリオ暦を1582年の導入前の日付に適用した拡張です。計算機はこれを使用して、歴史的または非常に初期の日付が同じ一貫した閏年規則に従うようにし、任意の時代にわたってJDN演算が中断されないようにします。
- 閏年
- 366日(2月29日を含む)を含む年。グレゴリオ暦の年が4で割り切れる場合、その年は閏年です。ただし世紀年は400でも割り切れる必要があります。したがって2000年と2024年は閏年ですが、1900年と2100年はそうではありません。
- モジュロから得られた曜日
- JDNからモジュロ演算を使って直接導出される曜日。週の日は7日ごとに繰り返されるため、$(\text{JDN} + 1) \bmod 7$を計算すると0から6の値が生成され、これが曜日にマップされます(JDN 0は月曜日に該当します)。これにより計算機は検索テーブルなしで結果の日付の曜日を命名できます。
よくある質問
うるう年にも対応していますか? はい。ユリウス通日方式はうるう年や各月の日数の違いを本質的に織り込んでいるため、うるう年の2月29日も正しく扱われます。
年をまたぐ計算もできますか? もちろんです。十分な日数を加算すれば結果は翌年へ繰り越され(減算すれば前年へ戻り)、特別な操作は一切必要ありません。
どの暦を使っていますか? 現在世界中で標準的に使われている民間暦である「先発グレゴリオ暦(proleptic Gregorian calendar)」を採用しています。