結論

2つの日付の日数は「終了日 − 開始日」で、これが開始日を含めない差の日数です。開始日(当日)も終了日も含めて「何日間」と数えるなら、差に1を足します。2026年11月9日から12月31日までなら、差は52日、当日を含めると53日です。下のツールで、期間の日数・◯日後の日付・月の日数とカレンダーを、祝日と営業日つきで出せます。

この記事でわかること

  • 「当日を含む・含まない」を場面ごとにどう選ぶか(民法140条の初日不算入を含む)
  • ◯日後・◯か月後の日付と、1月31日の1か月後が2月28日にも3月3日にもなる理由
  • Python・JavaScript・Java・PostgreSQL・date コマンドで日数を数えた出力とエラーの原文

2026年11月9日更新|Python 3.13・Node.js 22・Java 21・PostgreSQL 16・GNU date・Chromium で実行確認

日数計算を読み込み中です。

ツールの使い方:上の切り替えで3つの使い方を選べます。上の2つのチェック「祝日を休みとして数える」(初期はオン)と「年末年始(12/29〜1/3)も休みにする」(初期はオフ)は、3つすべての営業日の数え方に効きます。

  • 2つの日付の間の日数:開始日と終了日を入れ、数え方を「開始日を含めない(差の日数)」か「開始日も終了日も含める(当日を含む)」から選びます。大きな文字で日数を出し、もう一方の数え方の日数も横に添えます。下の表には、開始日・終了日(曜日と和暦つき)、日数、週で表すと(◯週間と◯日)、月で表すと(◯年◯か月と◯日。月末は末日にそろえる数え方。1か月に満たないときは「◯ 日(1か月に満たない)」)、時間で表すと(時間・分・秒)、平日(月〜金)、土曜・日曜、平日にあたる祝日、営業日の数が並び、期間中の平日の祝日は折りたたみの一覧で見られます。終了日が開始日より前なら、逆向きに数えます。見本のボタン(今日 → 年末、今日 → 月末、今日 → 来年の今日、2月(うるう年)、1月1日 → 今日、今日 → 3か月後)と、開始日と終了日の入れ替えボタンがあります。「結果をコピー」で「2026年11月9日(月)〜2026年12月31日(木):52日(開始日を含めない)、営業日 37日」の形の1行をコピーできます。
  • ◯日後・◯日前の日付:基準日から N 日・営業日・週間・か月・年の後か前かを選びます。「基準日を1日目と数える(当日を含む)」のチェックで数え方を切り替えられます。結果の日付と曜日(祝日なら祝日名)、その日が日曜日・土曜日・祝日・平日のどれか(土日の祝日は「・祝日名」を添え、平日の祝日は「祝日(名前)」と出し、休みなら次の営業日)、基準日からの差、年の何日目、ISO 形式(2026-12-09 の形)を出します。1月31日の1か月後のように日がない月は末日にし、JavaScript の setMonth のように翌月へずれる数え方の結果も注意書きで示します。見本のボタンは30日後・31日後・60日後・90日後・100日後・180日後・1か月後・10営業日後です。折りたたみの「この間隔で続けた日付(12回分)」を開くと、選んだ単位で N の1倍から12倍までの日付が並び(30日なら30日後・60日後…360日後、営業日なら土日祝を飛ばして数える)、「一覧をコピー」で「1回目:…」の形の12行をコピーできます。「基準日を1日目と数える」の設定も一覧に反映されます(営業日なら、1回目は上の結果と同じ日になります)。「結果をコピー」では「2026年11月9日(月) の 10営業日後:2026年11月24日(火)」の形の1行をコピーできます。
  • 月の日数・カレンダー:年と月を選ぶと(前の月・次の月のボタンもあります)、その月の日数とうるう年かどうか、1日の曜日、末日、平日と土日の数、営業日の数、その年の日数と和暦、祝日に色を付けたカレンダー(今日に枠)、その月の祝日の一覧を出します。年は1900〜2199年で入れられます。

祝日は、祝日法の決まり(春分の日・秋分の日は計算式)から2000〜2099年の分を計算しています。この範囲の外の年は祝日を数えず、3つの機能のどれでも、範囲の外の年が入ると注意を表示します。入力した日付はどこにも送信されません。

この記事で実際に動かしたもの:上のツール(Chromium で操作)、Python(datetime・dateutil・holidays)・Node.js・Java・PostgreSQL・GNU date で日数と月末を計算したプログラム、ツェラーの公式の検算、ツールの祝日と holidays ライブラリの照合。

flowchart LR
    B{何を知りたい?} --> C[差・あと何日<br>含めない=終了日−開始日]
    B --> D[何日間・何日分<br>当日を含む=差+1]
    B --> E[法令の◯日以内<br>初日不算入=翌日が1日目]

よく調べられることの答えを先にまとめます。

やりたいこと いちばん早い方法 詳しい節
2つの日付の日数を計算したい ツールの「2つの日付の間の日数」。手で数えるなら終了日 − 開始日 日数計算のやり方
当日を含む日数を出したい 差の日数に1を足す。ツールは数え方を「当日を含む」に 当日を含む・含まないの使い分け
何日後・何日前の日付を知りたい ツールの「◯日後・◯日前」。2026年11月9日の30日後は12月9日(水) 何日後・何日前の求め方
1か月後・1年後の日付を知りたい 単位を「か月」「年」に。日がない月は末日(1/31 の1か月後は2/28) 月末の扱い
営業日の数・10営業日後を知りたい 土日祝を除いて数える。年末年始もチェックで除ける 営業日の数え方と祝日
その月が何日まであるか・曜日を知りたい ツールの「月の日数・カレンダー」。覚え方は「西向く士」 月の日数とうるう年
「◯日以内」がいつまでか知りたい 法令の期間は初日を数えない。受け取った日の翌日が1日目 当日を含む・含まないの使い分け
プログラムで日数を計算したい 日付だけの型(date・LocalDate)どうしで引き算する 言語別の日数計算のコード

確認環境:Ubuntu 24.04.5 LTS の上で、Python 3.13.18(datetime、python-dateutil 2.9.0.post0、holidays 0.108 を作業場所の venv に入れて使用)、Node.js 22.23.4、OpenJDK 21.0.12.1(java.time)、PostgreSQL 16.15(作業場所に作ったクラスターを 127.0.0.1 で起動し、終わったら停止)、GNU coreutils 9.4 の date で、同じ日付の計算を実行して出力を取りました。記事内ツールは Chromium 153.0.8010.12(playwright 1.63.0、幅390px、時刻帯 Asia/Tokyo)で開いて各機能を操作し、表示された結果を載せています。期間の数え方は e-Gov 法令検索の民法第140条〜第143条、祝日は内閣府「国民の祝日について」の公表(2026年・2027年の表)で確かめました。内閣府の CSV ファイルはこの環境のネットワークの制限で取得できなかったため、CSV そのものとの照合はしていません。図は mermaid 11.16.0 で描画を確かめています(確認日 2026年11月9日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「日数計算ツール|期間・何日後の日付・当日を含む数え方と曜日・営業日」

日数計算のやり方(差の日数と当日を含む日数)

この節では、2つの日付の間の日数を手で計算する方法と、「差」と「当日を含む」で1日違う理由が分かります。

日数計算の基本は引き算です。終了日から開始日を引いた数が「差の日数」で、開始日は数えません。開始日も1日目として数えるなら、差に1を足します。植木算と同じで、「日付と日付の間のすき間」を数えるか、「日付そのもの」を数えるかの違いです。

開始日を含めない(差の日数)

計算:終了日 − 開始日

11月9日 → 12月31日は 52日

「あと何日」「何日たった」「何日後」

プログラムの引き算はこちらの答えになる

開始日も終了日も含める(当日を含む)

計算:終了日 − 開始日 + 1

11月9日 → 12月31日は 53日

「何日間」「何日分」「連続◯日目」

休暇・出張・イベントの日数はこちら

月をまたぐときに手で数えるなら、「開始月の残り」+「間の月の日数」+「終了月の日数」に分けると間違えにくくなります。11月9日から12月31日なら、11月の残りが 30 − 9 = 21日、12月が31日で、合わせて52日です。これが差の日数で、当日を含めると53日になります。

ツールで同じ期間(今日 → 年末のボタン)を数えると、次のように表示されました。

52 日 (当日を含めるなら 53 日)
開始日        2026年11月9日(月) 令和8年11月9日
終了日        2026年12月31日(木) 令和8年12月31日
日数          52 日
週で表すと    7 週間と 3 日
月で表すと    1 か月と 22 日
時間で表すと  1,248 時間(74,880 分・4,492,800 秒)
平日(月〜金)  38 日
土曜・日曜    7 日・7 日
平日にあたる祝日  1 日
営業日(土日祝を除く)  37 日
内訳(平日・土日・祝日・営業日)は、開始日の翌日から終了日までの 52 日で数えています。

表の下の「結果をコピー」を押すと、次の1行がクリップボードに入りました(メールやチャットにそのまま貼れます)。

2026年11月9日(月)〜2026年12月31日(木):52日(開始日を含めない)、営業日 37日

数え方を「当日を含む」に切り替えると、日数は53日、平日は39日、営業日は38日に変わりました。内訳は「当日を含む」なら両端を含む範囲、含めないなら開始日の翌日から終了日までで数えるので、開始日が平日だと平日と営業日が1日ずつ増えます。平日にあたる祝日の1日は11月23日(勤労感謝の日・月曜)です。

2026年1月1日から12月31日を当日を含めて数えると365日、平日261日、土曜52日・日曜52日、平日にあたる祝日17日、営業日244日でした。2026年の祝日は18日ありますが、5月3日(憲法記念日)が日曜なので、平日にあたるのは17日です。

自分で確かめる(ターミナルで1行・ブラウザで1行)

手元の計算と合わせたいときは、次の1行で同じ答えが出ます。Linux のターミナルでは GNU date で秒にして引き算し、ブラウザでは開発者ツールのコンソール(F12)に貼ります。

$ echo $(( ( $(date -ud 2026-12-31 +%s) - $(date -ud 2026-11-09 +%s) ) / 86400 ))
52
(Date.UTC(2026, 11, 31) - Date.UTC(2026, 10, 9)) / 86400000
// 52(月は0から数えるので 11 が12月、10 が11月)

「当日を含む・含まない」の使い分け(場面別の表)

この節では、契約・期限・服薬・休暇などの場面で、どちらの数え方を使うかと、法律で決まっている「初日不算入」が分かります。

法令や契約で「◯日」「◯か月」と期間を決めたときは、初日を数えないのが原則です(民法140条)。e-Gov 法令検索で確かめた条文は次のとおりです。

第百四十条 日、週、月又は年によって期間を定めたときは、期間の初日は、算入しない。ただし、その期間が午前零時から始まるときは、この限りでない。

第百四十一条 前条の場合には、期間は、その末日の終了をもって満了する。

つまり、11月9日の昼に書類を受け取って「14日以内」と言われたら、1日目は11月10日で、14日目の11月23日の終わりまでです。これはツールの「◯日後」で、チェックを外したまま(基準日を数えない)14日後を出した日と同じです。一方、「4月1日から1年間」の契約のように午前零時から始まる期間は初日を数えるので、2026年4月1日から2027年3月31日までになります。

場面 数え方 例 ツールの設定
◯日以内の手続き(法令の期間) 初日を含めない(翌日が1日目) 11/9 に受け取り14日以内 → 11/23 まで ◯日後・チェックなし
午前零時から始まる契約期間 初日を含む 2026/4/1 から1年間 → 2027/3/31 まで 期間・当日を含む(365日)
月単位の期間 暦で数え、応当日の前日に満了(民法143条) 1/31 に1か月の期間を定めた → 2/28 まで 手で確かめる(下の説明)
薬の「7日分」・連続◯日 飲み始めた日を1日目 11/9 から7日分 → 11/15 まで ◯日後・基準日を1日目
休暇・出張・イベントの日数 両端を含む 11/9〜11/13 → 5日間 期間・当日を含む
賞味期限・有効期限まで「あと何日」 差の日数(表示の日がその期限) 11/9 → 12/31 は あと52日 期間・含めない
保険・ポイント・会員の期限 約款・規約に書かれた始まりと終わり 「◯日の午後◯時から」などは約款に従う 約款を読んでから合わせる
生まれてから何日・入社から何日 差の日数(誕生日・入社日が0日目) 生年月日 → 今日 期間・含めない

月や年で決めた期間は、日数ではなく暦で数えます(民法143条)。条文は「最後の月においてその起算日に応当する日の前日に満了する」とし、ただし書で「最後の月に応当する日がないときは、その月の末日に満了する」と定めています。1月31日に1か月の期間を定めた場合(午前零時からでない)は、初日を数えないので起算日は2月1日、最後の月の3月の応当日は3月1日、その前日の2月28日に満了します。

末日が日曜・祝日などにあたるときは、「その日に取引をしない慣習がある場合に限り」翌日に満了すると民法142条が定めています。手続きごとに別の決まりがあることも多いので、期限の判断は、手続きを案内している役所・会社の説明で確かめるのが確実です。ツールは、結果の日が土日・祝日なら「次の営業日」を表示するので、目安として使えます。

「11月9日から5日間の休暇」の最終日

やってはいけない11月9日の5日後を出して、11月14日(土)を最終日にする。差で数えているので1日多い
→
代わりに「基準日を1日目と数える」をオンにして5日後を出す。11月13日(金)が5日目になる

見分ける問い:「最初の日も1日として数える話か」

何日後・何日前の日付の求め方(30日後・100日後の早見表)

この節では、基準日から◯日後・◯日前の日付を出す方法と、「基準日を1日目と数える」かどうかで1日ずれる様子が分かります。

「30日後」は、ふつう基準日の翌日を1日目として30日目の日です。計算は「基準日 + 30日」で、2026年11月9日の30日後は12月9日(水)です。基準日を1日目と数える(当日を含む)なら30日目は12月8日(火)になります。ツールで切り替えると、次のように表示されました。

基準日 2026年11月9日(月) から 30 日後
チェックなし        → 2026年12月9日(水) 基準日からの差 30 日後
基準日を1日目と数える → 2026年12月8日(火) 29 日後(当日を含めると 30 日目)

2026年11月9日を基準にした早見表です。Python の date + timedelta(days=N) で出し、ツールの見本ボタンと同じ答えになることを確かめました。

何日後 日付(基準日を数えない) 基準日を1日目と数えると メモ
30日後2026年12月9日(水)12月8日(火)11月は30日まで
31日後2026年12月10日(木)12月9日(水)
60日後2027年1月8日(金)1月7日(木)年をまたぐ
90日後2027年2月7日(日)2月6日(土)結果が休みの日
100日後2027年2月17日(水)2月16日(火)
180日後2027年5月8日(土)5月7日(金)次の営業日は5月10日(月)
365日後2027年11月9日(火)11月8日(月)2027年はうるう年でない

「◯日前」は引き算です。ツールで「前」を選ぶと、基準日から戻った日付を出します。同じ間隔の日付を並べたいとき(隔週の会議など)は、ツールの「この間隔で続けた日付(12回分)」を開きます。2026年11月9日から2週間ごとなら、2週間後の11月23日(月・勤労感謝の日)、12月7日、12月21日、2027年1月4日…と12回分が並び、「一覧をコピー」で予定表に貼れます。プログラムで出すなら、次の1行です。

from datetime import date, timedelta
s = date(2026, 11, 9)
print([(s + timedelta(days=14 * i)).strftime("%m/%d") for i in range(6)])
# ['11/09', '11/23', '12/07', '12/21', '01/04', '01/18']

30日後を選んで一覧を開くと、2026年12月9日(水)・2027年1月8日(金)・2月7日(日)・3月9日(火)…11月4日(木)と、30日ごとの12回分が並びました。1か月後を1月31日から並べると、2月28日・3月31日・4月30日…と各月の末日になり、短い月で日がずれたまま続くことはありませんでした(毎回、基準日から N か月を足し直して数えるためです)。

週単位なら「週間」を選びます。2026年11月9日の2週間後は11月23日(月)で、ツールは「その日は」の欄に「祝日(勤労感謝の日)。次の営業日は 2026年11月24日(火)」と表示しました。

月で数える期間と月末の扱い(1月31日の1か月後)

この節では、「1か月後」「1年後」の日付が、ツール・言語・コマンドで2月28日にも3月3日にもなる理由と、実行結果の違いが分かります。

1月31日の1か月後は、2月に31日がないので答えが2通りあります。月末にそろえて2月28日とする数え方と、2月31日を「2月28日の3日後」と読んで3月3日にする数え方です。ツールは前者で、注意書きで後者の結果も示します。

基準日 2026年1月31日(土) から 1 か月後 → 2026年2月28日(土)
その日は:土曜日。次の営業日は 2026年3月2日(月)
31日がない月なので、その月の末日(2026年2月28日(土))にしました。
月末を超えて翌月にずらす数え方(JavaScript の setMonth など)では 2026年3月3日(火) になります。

同じ計算を各言語とコマンドで実行した結果です。

書き方 1/31 の1か月後 2024/2/29 の1年後 3/31 の1か月前
この記事のツール2026-02-282025-02-282026-02-28
Python relativedelta2026-02-282025-02-282026-02-28
Java plusMonths・plusYears・minusMonths2026-02-282025-02-282026-02-28
PostgreSQL ± interval2026-02-28 00:00:002025-02-28 00:00:002026-02-28 00:00:00
JavaScript setMonth・setFullYear2026/3/32025/3/12026/3/3
GNU date -d '... +1 month'2026-03-032025-03-012026-03-03

Python・Java・PostgreSQL は末日にそろえ、JavaScript の Date と GNU date は翌月にあふれました。3月31日の1か月前が3月3日になるのは、「2月31日」が2月28日の3日後と読まれるためです。請求日・締め日のように月末が大事な処理では、使う言語がどちらの数え方かを先に確かめます。

Python の標準の datetime には「か月を足す」機能がなく、日だけを書き換えると例外になります。

>>> date(2026, 1, 31).replace(month=2)
ValueError: day is out of range for month

期間を「◯年◯か月と◯日」で表すときも、月末の扱いで答えが変わります。2026年1月31日から2027年3月1日までは、ツールでは「1 年 1 か月と 1 日(13 か月と 1 日)」、Python の relativedelta は relativedelta(years=+1, months=+1, days=+1)、Java の Period は P1Y1M1D、PostgreSQL の age は 1 year 1 mon 1 day で、この例ではそろいました。13か月後を末日にそろえた2027年2月28日から、1日進んだ3月1日までと数えているためです。

JavaScript での月末の取り方や、日付の加算・減算のコードは、関連記事「JavaScript日付計算まとめ|加算・減算・日数差分・月末取得をコードで解説」で扱っています。date コマンドの書式と月末の計算は、関連記事「dateコマンドのフォーマット一覧と日付計算|月末・macOS差異もコピペで」で扱っています。

月の日数とうるう年(西向く士と4・100・400の決まり)

この節では、各月が何日まであるかの覚え方と、うるう年の正しい判定方法が分かります。

31日まである月は1・3・5・7・8・10・12月、30日までの月は4・6・9・11月、2月は28日(うるう年は29日)です。30日以下の月は「に(2)し(4)む(6)く(9)さむらい(士=十一)」と覚えます。「士」の字を分けると「十」と「一」になるので11月です。もう1つの覚え方は握りこぶしの指の付け根で、山を31日、谷を30日(2月は28か29日)として1月から数えます。

うるう年の決まりは3段です。

  1. 14で割り切れる年 → うるう年2024年・2028年
  2. 2ただし100で割り切れる年 → 平年1900年・2100年は2月28日まで
  3. 3ただし400で割り切れる年 → うるう年2000年は2月29日まであった

Python で判定した結果は次のとおりで、ツールの「月の日数・カレンダー」でも2028年2月は「29 日(2028年はうるう年)」、2100年2月は「28 日(2100年はうるう年ではない)」と表示されました。

leap = lambda y: y % 4 == 0 and (y % 100 != 0 or y % 400 == 0)
print({y: leap(y) for y in (1900, 2000, 2024, 2026, 2028, 2100)})
# {1900: False, 2000: True, 2024: True, 2026: False, 2028: True, 2100: False}

「4で割り切れればうるう年」だけで書くと、2100年を間違えます。2000年は400で割り切れるのでうるう年だったため、2000年だけで試すと誤りに気づきません。うるう年がない年に2月29日を作ろうとすると、言語ごとに次の原文が出ました。

Python : ValueError: day is out of range for month
Java   : java.time.DateTimeException: Invalid date 'February 29' as '2026' is not a leap year
date   : date: invalid date '2026-02-29'

JavaScript だけは例外にならず、new Date("2026-02-30") は Mon Mar 02 2026 09:00:00 GMT+0900 になりました。入力された日付が正しいかを確かめるときは、作った Date の年・月・日が入力と同じかを比べます。

曜日の求め方(ツェラーの公式を Python で検算)

この節では、日付から曜日を計算する公式と、その公式が正しいことを300年分(約11万日)で確かめた結果が分かります。

日付から曜日を出す有名な式がツェラーの公式です。1月と2月は前の年の13月・14月として扱い、年の下2桁を K、上2桁を J として、次の h が 0 なら土曜、1 なら日曜…6 なら金曜です。

def zeller(y, m, d):
    if m < 3:
        y, m = y - 1, m + 12
    K, J = y % 100, y // 100
    h = (d + 13 * (m + 1) // 5 + K + K // 4 + J // 4 + 5 * J) % 7
    return "土日月火水木金"[h]

print(zeller(2026, 11, 9))   # 月
print(zeller(2000, 1, 1))    # 土

この関数の答えを、1900年1月1日から2199年12月31日までの毎日について Python の date.weekday() と比べました。

1900-01-01〜2199-12-31 109573 日で不一致 0

手で計算するなら、2026年11月9日は m=11、K=26、J=20 で、9 + 13×12÷5 の整数部分 31 + 26 + 6 + 5 + 100 = 177、177 を 7 で割った余りが 2 なので月曜です。ふだんはツールの結果の「(月)」を見るほうが早く、プログラムでは標準の曜日の関数(Python の weekday()、Java の getDayOfWeek()、JavaScript の getDay())を使います。Java で2026年11月9日を調べると MONDAY、年の何日目は 313 でした。

営業日の数え方と日本の祝日(振替休日・年末年始)

この節では、営業日を数えるときに除く日と、祝日の決まり、ツールの祝日が正しいことを確かめた結果が分かります。

営業日は、土曜・日曜・祝日を除いた日として数えるのが一般的です。年末年始やお盆、会社の創立記念日などを休みにする会社も多いので、ツールでは年末年始(12/29〜1/3)を休みに加えるチェックを用意しています。それ以外の会社独自の休みは数えません。

2026年12月25日から2027年1月5日まで(開始日を含めない11日)をツールで数えると、営業日は年末年始のチェックなしで6日、ありで3日でした。5営業日後も、チェックなしなら2027年1月4日(月)、ありなら1月7日(木)と3日違います。

1,773日2000〜2099年の祝日・休日ツールと holidays 0.108 で全日一致
18日2026年の祝日・休日内閣府の表と一致
17日2027年の祝日・休日内閣府の表と一致

ツールの祝日の計算部分を Node.js で動かして2000〜2099年の一覧を書き出し、Python の holidays ライブラリの日本の祝日と日付を突き合わせた結果です。どちらか一方にしかない日は0件でした。

2000 2050 tool 895 holidays 895 only_tool [] only_lib []
2000 2099 tool 1773 holidays 1773 only_tool [] only_lib []
2026 2027 tool 35 holidays 35 only_tool [] only_lib []

内閣府の公表(2026年11月9日時点で2027年の分まで)と比べても、2026年の18日・2027年の17日はすべて同じ日付でした。2028年以降は、祝日法に基づく計算値です。春分の日・秋分の日は、前の年の2月に官報で公表されて確定するので、2028年以降の春分・秋分は公表後に確かめる必要があります。法律が改正されて祝日が増減した場合も、計算値とは違ってきます。

祝日法の3つの「休日」の決まりは、内閣府の説明で次のとおりです。

  • 国民の祝日:元日・成人の日(1月の第2月曜)・建国記念の日・天皇誕生日(2月23日)・春分の日・昭和の日・憲法記念日・みどりの日・こどもの日・海の日(7月の第3月曜)・山の日(8月11日)・敬老の日(9月の第3月曜)・秋分の日・スポーツの日(10月の第2月曜)・文化の日・勤労感謝の日。
  • 振替休日(第3条第2項):「国民の祝日」が日曜日に当たるとき、その日の後の最も近い平日が休日になる。2026年は5月3日(日)の分が5月6日(水)、2027年は3月21日(日)の分が3月22日(月)。
  • 祝日に挟まれた平日(第3条第3項):前日と翌日が両方「国民の祝日」の平日は休日になる。2026年9月22日(火)は敬老の日と秋分の日に挟まれて休日。内閣府の表では「休日(祝日法第3条第3項による休日)」と書かれ、ツールでは「休日(祝日に挟まれた日)」と表示します。

ツールの「月の日数・カレンダー」で2026年9月を開くと、「祝日:9/21(月)敬老の日、9/22(火)休日(祝日に挟まれた日)、9/23(水)秋分の日」と並び、その月の営業日は19日でした。

営業日の計算を Python・Java・SQL のプログラムに組み込む方法や、内閣府の CSV の読み込み方は、関連記事「祝日判定と営業日計算|内閣府CSVでPython・Java・JS・SQL・Excel」で扱っています。表計算ソフトの関数で日付を計算したいときは、関連記事「Excel日付計算の関数一覧|月末・営業日・年齢・期間の数式早見表」で扱っています。

◯営業日後の数え方

「10営業日後」は、基準日の翌日から休みの日を飛ばして10日目の営業日です。2026年11月9日(月)の10営業日後は、11月23日(勤労感謝の日)を飛ばして11月24日(火)になりました。「基準日を1日目と数える」をオンにすると、基準日が営業日なら1日目に数えるので11月20日(金)です。ツールは数え方を注意書きで「基準日は数えていません。」「基準日が営業日なら1日目に数えています。」と表示します。

1

休みの日を決める

土日・祝日のほかに、年末年始や会社の休みを除くかを決める。ツールでは年末年始だけ加えられる。

チェック2つ

2

基準日を数えるか決める

「受け取った日から10営業日」なら基準日は数えないことが多い。「本日を含めて10営業日」なら1日目に数える。

基準日を1日目と数える

3

結果の日の曜日と祝日名を見る

営業日で数えた結果は必ず営業日になる。日数で数えた結果が休みの日なら、「次の営業日」を確かめる。

その日は

言語別の日数計算のコード(Python・JavaScript・Java・SQL・date)

この節では、2つの日付の差の日数と◯日後を、5つの書き方で計算したコードと出力が分かります。

どの言語でも、日付だけの型どうしを引き算するのが基本です。時刻つきの型で引くと、時刻の差で1日少なく出ることがあります(次の節で原文を示します)。以下はすべて2026年11月9日から12月31日を計算した実行結果です。

Python(datetime と dateutil)

from datetime import date, timedelta
from dateutil.relativedelta import relativedelta
a, b = date(2026, 11, 9), date(2026, 12, 31)
print("差の日数:", (b - a).days)
print("当日を含む:", (b - a).days + 1)
print("30日後:", a + timedelta(days=30))
print("1/31 の1か月後:", date(2026, 1, 31) + relativedelta(months=1))
差の日数: 52
当日を含む: 53
30日後: 2026-12-09
1/31 の1か月後: 2026-02-28

JavaScript(Node.js・ブラウザ)

const a = new Date(Date.UTC(2026, 10, 9)), b = new Date(Date.UTC(2026, 11, 31));
console.log("差の日数:", (b - a) / 86400000);
const d = new Date(2026, 0, 31); d.setMonth(d.getMonth() + 1);
console.log("1/31 に setMonth(+1):", d.toLocaleDateString("ja-JP"));
console.log("2026年2月の末日:", new Date(2026, 2, 0).getDate());
差の日数: 52
1/31 に setMonth(+1): 2026/3/3
2026年2月の末日: 28

JavaScript で日数を数えるときは、Date.UTC で作った値どうしを引くと、夏時間の影響を受けません。この記事のツールも、日付を UTC の「1970年1月1日からの日数」で扱っています。

Java(java.time)

LocalDate a = LocalDate.of(2026, 11, 9), b = LocalDate.of(2026, 12, 31);
System.out.println("差の日数: " + ChronoUnit.DAYS.between(a, b));
System.out.println("1/31 plusMonths(1): " + LocalDate.of(2026, 1, 31).plusMonths(1));
System.out.println("Period: " + Period.between(LocalDate.of(2026, 1, 31), LocalDate.of(2027, 3, 1)));
差の日数: 52
1/31 plusMonths(1): 2026-02-28
Period: P1Y1M1D

SQL(PostgreSQL)

SELECT date '2026-12-31' - date '2026-11-09' AS 差の日数;   -- 52
SELECT date '2026-11-09' + 30 AS "30日後";                 -- 2026-12-09
SELECT date '2026-01-31' + interval '1 month';            -- 2026-02-28 00:00:00
SELECT count(*) FILTER (WHERE extract(isodow FROM d) < 6) AS 平日, count(*) AS 全日数
FROM generate_series(date '2026-11-10', date '2026-12-31', interval '1 day') AS g(d);
 平日 | 全日数
------+--------
   38 |     52

PostgreSQL では date どうしの引き算が整数の日数になります。最後の SQL は開始日の翌日から終了日までの平日(祝日を除く前)を数えたもので、ツールの「平日(月〜金)38 日」と一致しました。DB ごとの日付型と時刻帯の違いは、関連記事「タイムゾーン設計|UTC保存・JST表示をDB別実行結果で解説」で扱っています。

date コマンド(GNU coreutils)

$ date -d '2026-11-09 +30 days' '+%F %A'
2026-12-09 Wednesday
$ date -d '2026-02-01 +1 month -1 day' +%F     # 2月の末日
2026-02-28
$ LC_ALL=C date -d 2026-11-09 '+%j %u %A'      # 年の何日目・曜日番号
313 1 Monday

macOS の date は書き方が違い(-v+30d の形)、上のコマンドはそのままでは動きません。Python の datetime の使い方全体は、関連記事「Python datetimeの使い方|タイムゾーン・月末計算を実行結果で」で扱っています。Unix 時刻(エポック秒)と日時の変換は、同じシリーズの「Unixタイムスタンプ変換」の記事で扱います。

日数計算のよくある間違い(1日ずれ・時刻・夏時間・タイムゾーン)

この節では、日数が1日ずれる原因を、実際に出た値やエラーの原文と直し方で確かめられます。

1時刻つきで引くと1日少ない

11月9日18時から11月10日9時は、Python で 15:00:00、.days は 0。日付だけで引くと 1 になった。

2夏時間で 1.958 日

時刻帯をニューヨークにすると、3月7日から9日のローカル時刻の差は 1.9583333333333333 日。切り捨てると1日になった。

3日付の文字列が前日になる

new Date("2026-11-09") は UTC の0時として読まれ、ニューヨークの時刻帯では getDate() が 8 を返した。

2つめと3つめは、ブラウザやサーバーの時刻帯が日本以外のときに起きます。日本の時刻帯(夏時間なし)では両方とも正しい値が出たため、手元の確認だけでは気づきにくい間違いです。

$ TZ=America/New_York node -e 'const x=new Date(2026,2,7),y=new Date(2026,2,9);
  console.log((y-x)/86400000, Math.floor((y-x)/86400000), Math.round((y-x)/86400000))'
1.9583333333333333 1 2

$ TZ=America/New_York node -e 'const d=new Date("2026-11-09");
  console.log("getDate():", d.getDate(), "getUTCDate():", d.getUTCDate())'
getDate(): 8 getUTCDate(): 9
症状・出た値(原文) 原因 直し方
「11/9〜11/13 は4日」と出て休暇が1日足りない 差の日数で数えた 何日間を数えるなら差+1。ツールは「当日を含む」
Python .days が 0(15:00:00) datetime(時刻つき)どうしで引いた .date() にしてから引く
JavaScript で 1.9583333333333333 夏時間の切り替えで1日が23時間 Date.UTC で作って引く。または Math.round
getDate(): 8(9日のはず) 日付だけの文字列は UTC として読まれる getUTCDate() を使うか、年・月・日を数値で渡す
ValueError: day is out of range for month 日を変えずに月だけ書き換えた・存在しない日付 relativedelta(months=1) で足す
DateTimeException: Invalid date 'February 29' うるう年でない年の2月29日 入力を確かめる。年を足すなら plusYears
1/31 の1か月後が 2026/3/3 setMonth・GNU date は月末からあふれる 末日にそろえる処理を書く。ツールは2/28
new Date("2026-02-30") が3月2日 JavaScript は存在しない日を例外にしない 作った日付の年・月・日が入力と同じか比べる

時刻帯の考え方と、UTC で保存して日本時間で表示する設計は、前の節で紹介したタイムゾーン設計の記事が詳しく扱っています。

  • 1当日を含むか、決まりを先に確かめた法令の期間は初日不算入。何日間・何日分は両端を含む
  • 2日付だけの型で引き算している時刻つきで引くと、時刻の差で1日少なく出る
  • 3月を足す処理の月末の扱いを確かめた1/31 の1か月後が 2/28 か 3/3 か
  • 42100年・2/29 でうるう年の判定を試した4で割るだけの判定は2100年を間違える
  • 5営業日の休みの範囲を決めた土日祝だけか、年末年始・会社の休みも除くか

どの数え方を使うか(判断表)

この節では、目的ごとにツールのどの機能と設定を使えばよいかが一目で分かります。

目的 数え方 ツールの機能と設定 2026年11月9日を基準にした例
年末まであと何日差の日数2つの日付・含めない52日
年末までの日数(今日も1日)当日を含む2つの日付・当日を含む53日
年末までに働ける日営業日(当日を含む)2つの日付・当日を含む・祝日オン38日
30日後の日付基準日を数えない◯日後・30日後12月9日(水)
今日を1日目とした30日目基準日を数える◯日後・基準日を1日目12月8日(火)
10営業日後の期日土日祝を飛ばす◯日後・営業日11月24日(火)
1か月後の同じ日暦で数える(ない日は末日)◯日後・か月12月9日(水)
隔週・毎月の予定日を並べる間隔の1〜12倍◯日後・この間隔で続けた日付2週間ごと:11/23・12/7・12/21…
今月の営業日の数月の土日祝を除く月の日数・カレンダー11月は19日

迷ったら、「最初の日も1日として数える話か」と「結果が休みの日でもよいか」の2つを先に決めると、選ぶ設定が決まります。工数の計算(人日・人月)は日数ではなく稼働日で数えるので、営業日の数を使います。

よくある質問

この節では、日数計算についてよく検索される疑問への短い答えが分かります。

Q. 当日を含む日数はどう計算しますか? A. 終了日 − 開始日 + 1 です。11月9日から12月31日なら、差の52日に1を足して53日です。ツールでは数え方を「開始日も終了日も含める(当日を含む)」にします。

Q. 「30日後」に当日は含みますか? A. ふつうは含めず、翌日を1日目として30日目です。2026年11月9日の30日後は12月9日です。「本日を含めて30日」と書かれているときは、基準日を1日目と数えて12月8日です。

Q. 「14日以内」はいつまでですか? A. 法令の期間は初日を数えないので(民法140条)、11月9日に受け取ったら11月10日が1日目で、11月23日の終わりまでです。末日が休日のときの扱いは民法142条と各手続きの決まりで変わるので、手続きの案内で確かめます。

Q. 1月31日の1か月後は何日ですか? A. 末日にそろえる数え方なら2月28日(うるう年は29日)、月末からあふれる数え方なら3月3日です。ツール・Python の relativedelta・Java・PostgreSQL は2月28日、JavaScript の setMonth と GNU date は3月3日でした。

Q. うるう年はどう判定しますか? A. 4で割り切れる年はうるう年、ただし100で割り切れる年は平年、さらに400で割り切れる年はうるう年です。2028年はうるう年、2100年は平年です。

Q. 生まれてから何日たったかを調べるには? A. ツールの「2つの日付の間の日数」で、開始日に生年月日、終了日に今日を入れ、「開始日を含めない」で数えます。表の「月で表すと」に、◯年◯か月と◯日も出ます。

Q. 何週間と何日かも分かりますか? A. ツールの表の「週で表すと」に出ます。11月9日から12月31日の52日は「7 週間と 3 日」です。手で出すなら、日数を7で割った商が週、余りが日です。

Q. 結果をコピーして貼り付けられますか? A. できます。「2つの日付の間の日数」と「◯日後・◯日前」に「結果をコピー」があり、日付・日数・営業日を1行にしてコピーします。「この間隔で続けた日付(12回分)」は「一覧をコピー」で12行をまとめてコピーできます。

Q. 今日は年の何日目ですか? A. 2026年11月9日は313日目です。ツールの「◯日後」で0日後を出すと「年の何日目」に出ます。date コマンドなら date +%j で出せます。

Q. 営業日に年末年始を含めないようにできますか? A. 上の「年末年始(12/29〜1/3)も休みにする」をオンにします。お盆や会社独自の休みは除けないので、その日数は別に引きます。

Q. 祝日は何年まで正しいですか? A. 2000〜2099年を計算し、2000〜2099年の全1,773日が holidays ライブラリと、2026年・2027年が内閣府の公表と一致しました。2028年以降は祝日法に基づく計算値で、春分・秋分の日は前の年の2月の官報で確定します。

Q. 入力した日付は送信されますか? A. 送信されません。計算はすべて開いているブラウザの中で行います。

まとめ

  • 日数計算は「終了日 − 開始日」が差の日数。開始日(当日)も数えるなら+1。11月9日から12月31日は52日、当日を含めて53日。
  • 法令や契約の「◯日以内」は初日を数えない(民法140条)。午前零時から始まる期間は初日を数える。月・年の期間は暦で数え、応当日がなければ末日(民法143条)。
  • 1月31日の1か月後は、ツール・Python・Java・PostgreSQL が2月28日、JavaScript の setMonth と GNU date が3月3日。月末を扱う処理は、使う言語の数え方を先に確かめる。
  • うるう年は4・100・400の3段で判定する。曜日はツェラーの公式でも出せ、1900〜2199年の109,573日で標準の関数と一致した。
  • 営業日は土日祝を除き、必要なら年末年始も除く。ツールの祝日は2000〜2099年の1,773日が holidays ライブラリと一致し、2028年以降は計算値。

参考・出典

確認日はいずれも 2026年11月9日です。

  • e-Gov 法令検索「民法」(第138条〜第143条 期間の計算):https://laws.e-gov.go.jp/law/129AC0000000089
  • 内閣府「国民の祝日について」:https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html
  • Python「datetime --- 基本的な日付型および時間型」:https://docs.python.org/ja/3/library/datetime.html
  • dateutil「relativedelta」:https://dateutil.readthedocs.io/en/stable/relativedelta.html
  • holidays(Python ライブラリ):https://pypi.org/project/holidays/
  • MDN「Date」:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Date
  • Oracle「java.time.LocalDate」(Java SE 21):https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/time/LocalDate.html
  • PostgreSQL「Date/Time Functions and Operators」:https://www.postgresql.org/docs/16/functions-datetime.html
  • GNU coreutils「Date input formats」:https://www.gnu.org/software/coreutils/manual/html_node/Date-input-formats.html

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「日数計算ツール|期間・何日後の日付・当日を含む数え方と曜日・営業日」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

成長のヒミツ、 ぜんぶ丸わかり