日数計算(終了日−開始日)・日付間の差と両端包含日数

日数計算(終了日−開始日)・日付間の差と両端包含日数

開始日と終了日を年月日で入力し、終了日−開始日の符号付き日数、絶対日数、両端を含む暦日数、週数を計算します。

入力

1600年から9999年までの西暦年を整数で入力します。

1から12までの月番号です。日数は年と月と組み合わせて確認します。

1から31までの日を入力します。2月29日や月末は正規グレゴリオ暦で検証します。

1600年から9999年までの西暦年を整数で入力します。

1から12までの月番号です。日数は年と月と組み合わせて確認します。

1から31までの日を入力します。2月29日や月末は正規グレゴリオ暦で検証します。

使い方

  1. 開始日と終了日の年・月・日をそれぞれ入力します。
  2. 終了日から開始日を引く向きであることを確認し、計算します。
  3. 経過境界数なら符号付き日数、日付欄の個数なら両日を含む暦日数を使い分けます。

計算式・考え方

S=開始日の通算日、E=終了日の通算日とし、符号付き差D=E−S、絶対日数=|D|、両日を含む暦日数=|D|+1、7日換算=D÷7です。同一日の差は0日、両端包含では1日です。

注意事項

  • このページの引き算は常に「終了日−開始日」です。終了日が後なら正、同じなら0、終了日が前なら負になります。順序を問わない距離が必要なときは絶対日数を選びます。符号を消してから遅れ日数とするなど、用途に応じて結果欄を使い分けてください。
  • 2024-02-28から2024-03-01までは、2月29日を通過するため差は2日です。両日を含む暦日欄は2月28日、29日、3月1日の3日を数えます。この2と3の違いは計算ミスではなく、日付の境界を数えるか、カレンダー上の日付セルを数えるかの定義差です。
  • 結果の「符号付き日数の7日換算」はDを単純に7で割った数値で、暦月の個数や「何週と余り何日」に丸めた結果ではありません。月1日から翌月1日のような期間を「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日です。その日自体を数える両端包含では1日です。

結果が負になるのは間違いですか?

終了日が開始日より前なら、終了日−開始日は負で正常です。順序に依らない距離は絶対日数を使います。

営業日数も計算できますか?

できません。土日、祝日、会社休業日を除外しない連続暦日の差です。

入力した年月日と日数・週数は、利用者の端末内だけで計算されます。サーバーや第三者へ送信・保存せず、氏名、予約内容、住所などの個人情報を入力する欄もありません。