日期相差天數怎麼算:日期加減、含首尾日與月份換算

用快速表計算兩日期相差幾天、指定日期加減日數或週數、區分含首尾日與經過天數,並說明月底、閏年、工作日和夏令時間的處理。

更新 2026.10.15

計算兩個日期之間的天數時,先確認要的是經過幾天,還是首尾日期都算入的日數。例如 10 月 7 日到 10 月 14 日相差 7 天;若把 7 日和 14 日都列入計數,則涵蓋 8 個日曆日期。本文以公曆日期為例,適用於行程、倒數、期間和一般日程估算;合約、退費或法定期限仍以適用規則的起算方式為準。

日曆特寫,頁面以紅色標示 30 日,呈現以日曆日期計數的情境

照片:Dafne Cholet;CC BY 2.0,Wikimedia Commons 原始檔案頁。

日期加減與天數計算快速方法表

要計算 快速方法 例子 結果與提醒
兩日期經過天數 結束日期 − 開始日期 2026-10-14 − 2026-10-07 7 天;不把起始日重複算入
首尾日期都計入的日數 結束日期 − 開始日期 + 1 2026-10-07 至 2026-10-14 8 個日曆日期
日期往後加 N 天 從該日期往後數 N 次日界線 2026-10-07 + 10 天 2026-10-17;起始日不算經過日
日期往前減 N 天 從該日期往前數 N 次日界線 2026-10-07 − 10 天 2026-09-27
週數換成日數 週數 × 7 6 週 × 7 42 天
日數換成整週與餘日 日數 ÷ 7,取商和餘數 17 天 = 2 × 7 + 3 2 週 3 天
日期加一個月 移到下一個日曆月;若沒有同一日,按指定月底規則處理 1 月 31 日 + 1 個月 依規則可能落在 2 月底;不是固定加 30 天
工作日數 排除指定休息日及所在地假日 週一至週五制,排除週末 假日因地區及年份而異,沒有全球通用結果

先決定計數口徑:「10 月 7 日起算 7 天」可能指 10 月 14 日到期(經過 7 天),也可能指 10 月 13 日是第 7 個日期(把 7 日列為第 1 天)。需要精確執行時,寫明起始日、截止日,以及首日是否計入。

公曆每月日數與閏年速查

月份 平年日數 閏年日數
1 月 31 31
2 月 28 29
3 月 31 31
4 月 30 30
5 月 31 31
6 月 30 30
7 月 31 31
8 月 31 31
9 月 30 30
10 月 31 31
11 月 30 30
12 月 31 31

公曆閏年判斷:年份能被 4 整除通常是閏年;整百年須能被 400 整除才是閏年。因此 2000 年是閏年,1900 和 2100 年不是。美國海軍天文台的曆法說明列出此規則。閏日是 2 月 29 日;跨年期間若包含閏日,日期相減會多計一天。

日期相減例子:區分經過日數和日曆日期數

跨月倒數

2026-02-27 到 2026-03-02:2 月 27 日到 28 日為 1 天、28 日到 3 月 1 日為 1 天、3 月 1 日到 2 日為 1 天,所以經過 3 天。若把 2 月 27 日、28 日、3 月 1 日和 2 日都列入日程,則共有 4 個日曆日期。

期間含首尾日

住宿日期寫 10 月 7 日入住、10 月 14 日退房,通常是 7 晚,不是 8 晚;若問「包含 7 日和 14 日的日期共有幾天」,答案則是 8 個日期。業務用語有各自慣例,計算前應確認欄位指的是夜數、經過日數或含首尾的日數。

月份與年份不能一律換成固定天數

說法 可靠的處理方式 為什麼不能簡單換算
1 個月 移到下一個日曆月,先定義目標月沒有同一日時如何處理 各月長度有 28、29、30、31 天;「一個月」不是固定 30 天
月底加 1 個月 按服務或軟體定義,例如將日期調整到目標月最後一日 1 月 31 日加一月可能得到 2 月 28/29 日;不同系統的月份溢位規則可能不同
1 年 按日曆年份推進,先定義 2 月 29 日遇平年時的對應日 平年 365 天、閏年 366 天
30 天 直接增加 30 個日曆日 不等於一個日曆月,也不等於每月帳單週期
365 天 直接增加 365 個日曆日 跨過 2 月 29 日時,日曆日期與「一年後」可能不同

若系統或條款使用「一個月」、「月底」、「周年」、「每 30 日」等字眼,不要自行互換。日期差值和固定天數是不同操作;程式或服務的月份加法也可能採不同月底處理規則,應查該工具的定義。Python datetime 官方文件可作為日期差值與固定時長運算的參考。

日期與時間的差別:跨夏令時間時不一定是 24 小時

若只計算兩個公曆日期標籤的日數,使用日曆日期相減即可。若計算兩個當地時間點經過幾小時,先確認時區並換到同一基準;跨越夏令時間切換時,當地鐘面的一個日曆日可能只有 23 或 25 小時。日期格式、UTC offset、地區時區和夏令時間的處理見日期時間格式、UTC 時差與時區判讀。RFC 3339 時間戳記中的 offset 表示特定時間點相對 UTC 的差值,不會單獨描述未來整套地區時區規則。RFC 3339

常見日期計算錯誤

  • 先把起始日算作第 1 天:日期相減的經過日數通常不包含起始日當天。
  • 把一個月當 30 天:如需日曆月,按月份和月底規則計算;如需固定 30 日,明確寫「30 天」。
  • 忽略閏年:跨越 2 月的日期區間應按實際公曆計算,不能每年都套 365 天。
  • 用週末代替工作日假期:工作日計算必須指定工作週、假日所在地和年份。
  • 直接比較不同時區的當地時間字串:先換成同一時區或時間基準,否則時刻先後和經過時間可能算錯。

日期格式與其他換算

跨系統傳遞日期時,建議使用年份在前的 YYYY-MM-DD 形式降低月/日順序歧義;只有日期時不要自行補上時刻或時區。完整日期、週日期、區間和時長的表示法見ISO 8601 日期時間格式完整對照。Unix 秒或毫秒時間戳記的換算見Unix 時間戳記秒、毫秒、微秒、奈秒與其他時間基準。

來源與適用範圍

本文以公曆日期的日常計算為範圍,不涵蓋宗教曆、財務日數慣例、司法期限或特定地區的工作日規則。涉及合約、法定期限、帳單週期或跨時區排程時,依適用條款、當地規則及系統文件確認起算方式。查核日期:2026-10-07。

資料記錄

資料維護資訊