日付+日数計算・正負の日数を加えた年月日と曜日
基準日に正または負の整数日を加え、うるう年と月末をまたいだ計算後の年・月・日・ISO曜日番号を求めます。
計算結果
- 計算後の年
- — 年
- 計算後の月
- — 月
- 計算後の日
- — 日
- 計算後のISO曜日番号(月=1、日=7)
- —
- 1600-01-01起点の通算日
- — 日
使い方
- 基準日の年月日を入力します。
- 未来へ進むなら正、過去へ戻るなら負の整数日を入力します。
- 計算後の年・月・日とISO曜日番号を確認し、必要な欄をコピーします。
計算式・考え方
基準日の通算日をS、加える整数日をNとし、結果通算日R=S+Nとします。Rを正規グレゴリオ暦の年・月・日へ逆変換します。N=0は基準日、N=1は翌日、N=−1は前日です。
注意事項
- 日数の加算は、基準日自体を0とするオフセット方式です。たとえば2024-02-28に2日を加えると、1日後が2月29日、2日後が3月1日になります。「初日を1日目と数える」一覧表を作る場合は、欲しい日番号から1を引いた値をオフセットにすると定義が合います。
- 負の日数を正式に許可しているため、「90日後」だけでなく「90日前」も同じ式で計算できます。日数を絶対値にするような曖昧な縮約は行わず、符号の向きをそのまま反映します。これにより、減算を別のエンジンとして実装したときの符号ミスも避けられます。
- 月の日数は一定ではないため、日数を30で割って月を増やす方法は使いません。1月31日+1日、2月28日+1日、うるう年の2月28日+1日はそれぞれ異なる日付になります。通算日で一日ずつの境界を表すことで、月跨ぎや年跨ぎを同じ規則で扱います。
- 営業日、取引日、平日のみを進めるカレンダーではなく、土日祝日を含む連続暦日の加算です。国・地域・組織ごとの休日は外部データが必要で、本ページは暗黙の休日除外を行いません。納期や書類提出日では、計算後に対象機関の休業日を別途確認してください。
- うるう年規則は米国海軍天文台USNOのLeap Years(aa.usno.navy.milの公式FAQ)とNISTのLeap Seconds FAQs(nist.govのTime and Frequency Division)を2026年7月13日に確認しました。4で割り切れる年を原則とし、100で割り切れる年を除き、400で割り切れる年を戻す規則です。
- 日付の表現はISO 8601-1:2019公式ページ(iso.org、standard 70907)とISOの『ISO 8601 — Date and time format』解説を2026年7月13日に確認し、本文ではYYYY-MM-DDの年・月・日の順を使います。入力欄は可読性のため別々にしていますが、年月日の意味はこの順序で固定です。
- ISO曜日番号は月曜日=1、火曜日=2、水曜日=3、木曜日=4、金曜日=5、土曜日=6、日曜日=7です。無償で参照できるIETF RFC 3339(datatracker.ietf.orgの公式HTML)のdate-wday定義と照合しました。JavaScriptのDate.getDayが採る日曜日=0の規約とは番号が異なるため、転記時は規約名も残してください。
- 対応範囲は1600-01-01から9999-12-31までです。この間を、1582年の導入や各地域の採用日による日付の飛びを入れないproleptic Gregorian(過去にも規則を連続適用する正規グレゴリオ暦)として扱います。歴史資料の当時の現地暦、ユリウス暦、改暦時に削除された日を再現するツールではありません。
- 「1日」は連続する暦日の境界を1つ進む意味で、86,400秒の実時間をタイムゾーン上で加算する意味ではありません。時刻、UTCオフセット、サマータイム、うるう秒は入力に持たず、年月日だけを扱います。時刻間隔が必要な予約、運行、ログ解析では、IANAタイムゾーンを扱える専用ライブラリを使ってください。
- 内部では1600-01-01を0とする整数通算日へ変換し、差、加算、減算を行います。年を365日ずつ数え、4年、100年、400年ごとの補正を整数除算で加減するため、ブラウザのローカル時刻解釈や、1970年起点のミリ秒値に依存しません。通算日からの逆変換も同じ月長で確認します。
- 年・月・日はすべて整数に限定します。2月30日、4月31日、平年の2月29日など、個々の欄の上限だけでは検出できない組合せは、計算前の日付制約で拒否します。計算後の通算日が範囲外に出る場合も結果を丸めたり循環させたりせず、入力エラーとしてfail-closedに停止します。
- すべての式は許可制の式ASTと有界な日付関数だけで実行し、文字列をコードとして実行しません。eval、new Function、外部API、CDN、fetch、XHR、WebSocketは使用せず、Pythonのビルド時評価とJavaScriptのブラウザ評価で同じ整数結果になることをテストします。
- 結果を他システムと照合するときは、暦法、年の範囲、曜日番号、開始日と終了日の包含、日付の引き算の向きを合わせてください。数字が一致しない場合は、時差や丸めよりも先に、片方が終了日を数えているか、日曜日を0としていないか、歴史上の現地暦を使っていないかを確認すると切り分けやすくなります。
- 正規グレゴリオ暦の日付専用計算です。歴史上の現地暦、時刻、時差、法的期限の特則は個別に確認してください。
よくある質問
0日を加えるとどうなりますか?
基準日と同じ年月日と曜日を返します。基準日は0日後というオフセット定義です。
過去の日付は計算できますか?
はい。加える日数を負にします。ただし計算後が1600-01-01より前ならエラーで停止します。
土日を飛ばして加算しますか?
いいえ。土日祝日を含む連続した暦日の加算です。
入力した年月日と日数・週数は、利用者の端末内だけで計算されます。サーバーや第三者へ送信・保存せず、氏名、予約内容、住所などの個人情報を入力する欄もありません。