日期與時間 指南

兩個日期差幾天怎麼算?包含結束日、跨月跨年與閏年完整指南

日期差最常見的錯誤不是算術,而是開始前沒有定義:起始日與結束日到底算不算一天。

更新日期:

「8 月 1 日到 8 月 5 日是幾天?」

有人回答 4 天,有人回答 5 天。

兩個人都可能沒有算錯,而是在算不同問題。

速答:兩個日期相差幾天怎麼算?
如果你問的是「經過多少個完整日曆間隔」,8/1 到 8/5 通常是 4 天;如果你問的是「8/1、8/2、8/3、8/4、8/5 這五個日期都算在活動內」,就是 5 個日曆日。日期差計算前一定先定義是否包含結束日;正式報名、法律、合約或行政期限則應以該制度的正式計算規則為準,不能只靠一般日期計算器。

一、先看最簡單的例子

開始:

2026-08-01

結束:

2026-08-05

算時間間隔

從 8/1 00:00 到 8/5 00:00:

  • 1 → 2:1 天
  • 2 → 3:1 天
  • 3 → 4:1 天
  • 4 → 5:1 天

共:

4 天。

算涵蓋的日期

活動包含:

  1. 8/1
  2. 8/2
  3. 8/3
  4. 8/4
  5. 8/5

共:

5 個日曆日。

所以「差 1 天」很多時候不是 bug,而是 inclusive / exclusive 的定義不同。

二、什麼叫包含結束日?

如果工具有:

包含結束日

勾選後通常代表:

把終點那一天也當成範圍內的一天。

例如:

8/1~8/5

不含終點:

4 天

含終點:

5 天

三、開始日要不要算?

一般「日期差」常以兩個日期的邊界差計算,不把開始日額外 +1。

但「活動天數」「住院日數」「住宿晚數」「報名期間」可能有各自制度定義。

例如:

住 8/1 入住,8/5 退房

是:

  • 4 晚;
  • 但跨 5 個日曆日期。

同一組日期可以有不同正確答案。

四、跨月怎麼算?

例如:

2026-01-30 → 2026-02-02

間隔:

  • 1/30 → 1/31:1
  • 1/31 → 2/1:1
  • 2/1 → 2/2:1

共:

3 天。

如果包含 2/2:

4 個涵蓋日期。

跨月不需要自己記每月有幾天,只要用真正的日期物件或日期計算器。

五、跨年怎麼算?

2025-12-31 → 2026-01-01

時間間隔:

1 天。

若把兩個日曆日期都算活動日:

2 天。

「跨了一年」不代表相差 365 天。

六、閏年為什麼會影響?

Gregorian calendar 中,閏年一般是:

  • 可被 4 整除;
  • 但整百年通常不是;
  • 除非也可被 400 整除。

所以:

  • 2024 是閏年;
  • 2100 不是;
  • 2000 是。

RFC 3339 也沿用這套 Gregorian leap-year 規則。

七、2024-02-28 到 2024-03-01 是幾天?

因為 2024 有 2/29:

  • 2/28 → 2/29:1
  • 2/29 → 3/1:1

所以:

2 天。

非閏年同樣日期範圍則是:

1 天。

八、日期差和「24 小時」完全一樣嗎?

如果只處理純日期,例如:

YYYY-MM-DD

通常可以用日曆日理解。

但帶時間與時區後:

一個「本地日曆日」不一定永遠等於 24 小時。

在有 Daylight Saving Time 的地區,跨越 DST 轉換時,某一天可能是 23 或 25 小時。

台灣目前沒有 DST,但跨國系統與 API 仍可能遇到。

九、所以日期工具為什麼最好只處理 Calendar Date?

如果需求只是:

2026-08-01 到 2026-08-05 幾天?

應把它視為:

calendar-date arithmetic。

不要先轉成任意本地午夜 timestamp 再除以 86,400,000,否則某些 DST 時區可能產生意外。

十、週數怎麼理解?

如果日期差是 17 天:

17 ÷ 7 = 2 週餘 3 天

這是一種 duration 表示。

但「跨了幾個星期」又可能是另一種問題,例如跨了 ISO week boundary。

不要把:

17 天 = 2.43 週

和:

涵蓋三個行事曆週

混為一談。

十一、月份差更不能直接用 30 天除

例如:

1/31 → 2/28

不是:

28/30 = 0.93 個月,所以不到一個月。

日曆月份是 calendar unit,不是固定 30 天。

如果你的問題是:

  • 滿幾個月;
  • 租期幾個月;
  • 月齡;

要定義月底規則。

十二、年齡計算也是日期差的一種特殊問題

年齡不是:

總天數 ÷ 365

因為:

  • 閏年;
  • 生日是否已過;
  • 2/29 出生;

都會影響。

FunnyTools 已有獨立的「年齡怎麼算」指南,因此本頁不重複搶該搜尋意圖。

十三、工作日和日曆日也不同

日期差工具回答:

calendar difference。

如果你要排除:

  • 星期六;
  • 星期日;
  • 國定假日;
  • 公司休假;

應改用:

工作日計算器

延伸:工作日怎麼算完整指南

十四、正式期限最危險的錯誤:自己猜是否含當日

例如規則寫:

收到通知後 10 日內。

這裡可能涉及:

  • 起算日;
  • 末日;
  • 例假日;
  • 法定遞延;
  • 送達定義。

一般日期計算器不能替代正式規則。

十五、日期差計算器適合什麼?

適合:

  • 旅行天數;
  • 專案區間;
  • 活動規劃;
  • 倒數準備;
  • 任務期間;
  • 日常比較。

正式法律、銀行、勞動、稅務、法院期限:

必須查正式來源。

十六、常見錯誤

錯誤 1

沒有先定義是否含結束日。

錯誤 2

用每月 30 天估月份。

錯誤 3

忘記閏年 2/29。

錯誤 4

把日曆日與工作日混用。

錯誤 5

把本地日曆日一律當 24 小時。

錯誤 6

拿一般工具算正式法定期限。

十七、快速判斷表

你真正想問的問題 適合方式
兩日期相隔多久 日期差
活動涵蓋幾個日期 含結束日
排除週末/假日 工作日
幾歲 年齡計算
API 時間點 Timestamp / ISO 8601
法律截止期限 查正式規則,再輔助試算

十八、FAQ

8/1 到 8/5 是 4 天還是 5 天?

時間間隔通常是 4 天;若 5 個日曆日期都算活動日,就是 5 天。

跨年會自動算嗎?

真正日期計算器會依 Gregorian calendar 處理。

2024 年有 2 月 29 日嗎?

有,2024 是閏年。

為什麼我的系統永遠差 1 天?

先檢查 inclusive/exclusive,再檢查 UTC、本地時區與午夜解析。

工作日要用日期差嗎?

不建議,應用可排除週末與假日的工作日工具。

十九、延伸閱讀

下一步

只是想知道兩個日期相差多少天?

先決定是否包含結束日,再用 FunnyTools 日期差計算器核對。

重點速記

8/1 → 8/5 = 4 intervals 8/1,2,3,4,5 = 5 inclusive calendar dates