toolfree

日期相差幾天

計算兩個日期之間相差的天數、週數、年月日與工作日,並說明造成差一天的「含頭含尾」問題。

在你的瀏覽器中執行

總天數
週數與天數
年、月、日
工作日

工作日計算的是中間經過的平日,不含結束當日,也未扣除國定假日。

含不含頭尾

這是任何日期差都必須先回答的問題,也是兩個計算器會差一天的原因。

8 月 3 日到 8 月 10 日

算法答案意思
不含尾——經過的天數7中間隔了幾晚,也就是間隔多長
含頭含尾——涉及的日期數8這個區間包含幾個日期

本頁算的是經過的天數:答案是 7,因為兩個日期之間經過了 7 天。這是「相差幾天」的一般含意, 也是所有程式語言的日期運算給出的結果。

會出問題的是規則本身用另一種算法寫的時候。住宿、租借與部分契約預告期是含頭含尾計算的——「7 晚」 的訂房跨越 8 個日期——所以在相信任何一個數字之前,先確認規則指的是哪一種。

年、月、日

這個拆解是曆法運算,不是除法。從 2020 年 1 月 15 日到 2026 年 8 月 7 日是 6 年 6 個月又 23 天,而這三個部分會剛好加回到目標日期,因為每一部分都是從前一部分落點 開始量的。

它不是 2396 ÷ 365。這裡的「月」是 28 到 31 天的真實曆月,所以:

這兩件事就是各家日期函式庫互相不一致的原因,也是任何牽涉法律或金錢的文件都會自己寫明計算慣例、 而不依賴某一套實作的原因。

工作日

這裡算的是中間經過的平日,不含結束當日。從星期一到下個星期一是 5 天。

有兩個限制值得講明:

真正重要的期限,請對照該地區的行事曆計算,不要只看這個數字。

以整週加上剩餘天數表示,因為那才是人腦記住一段時間的方式。100 天是 14 週又 2 天。

要注意一年是 52 週又 1 天,不是 52 週——這就是為什麼「每四週」發一次的薪水一年會發十三次。見 天數轉週數

閏年與 2 月 29 日

因為計算是以曆法日期而不是固定年長度進行的,所以這些都處理得了。2024 年有 366 天,跨過 2 月 29 日的區間會比一年後的同一段長一天。

2 月 29 日在平年沒有對應日。這裡採用的慣例——也是多數司法管轄區在法律上採用的——是落在 3 月 1 日。

時區與日光節約

兩者都不影響答案。這裡處理的是曆法日期而不是時間點,所以即使某一天的時鐘撥動了一小時,那一天 仍然是一天。用毫秒去做同樣的計算,正是差一小時那類錯誤的來源,而這裡刻意不那樣做。

全部在本機計算

兩個日期與結果都留在你的瀏覽器裡。反向的問題見 日期加減, 以生日為對象的同一套運算見 年齡計算器