日期計算器
選一個起始日期,決定加減多少,得到準確的結果日期——同時給出星期幾、是當年第幾天、距離今天多少天。
1 月 31 日加一個月,為什麼不是 2 月 31 日
加「月」和加「30 天」不是同一回事。月是日曆單位,長度會變,所以結果取決於從哪裡開始。
符合日常讀法的規則是:目標月份有這一天就保留日號,沒有就用那個月的最後一天。所以 1 月 31 日加一個月是 2 月 28 日(閏年 29 日),不是 3 月 3 日。
粗糙的實作會讓日期溢位——JavaScript 內建的 setMonth 預設就是這樣——所以某些線上計算器算月末日期會差好幾天。這裡改成夾到當月最後一天。
天、週、月是三種不同的運算
加天是精確的:30 天永遠是 30 天,和月份無關。以天計算的截止日期就該用這個。
加月是日曆運算:1 月 1 日加一個月是 2 月 1 日(隔 31 天),而 2 月 1 日加一個月是 3 月 1 日(隔 28 天)。要固定間隔就用天。
加年同理,多一個特殊情況:2 月 29 日加一年,在非閏年會落到 2 月 28 日。
常見用途
合約與通知期。「簽署後 30 天」和「簽署後一個月」是兩個不同日期,這個工具能讓你看清自己說的到底是哪個。
追蹤排程。從起始日算 90 天檢視、6 週檢查點,不用掰手指。
年齡與資格核對。算某人滿某個年齡的日期,或某項申報的最後一天。
常見問題
為什麼 1 月 31 日加一個月是 2 月 28 日?
因為不存在 2 月 31 日。計算器取目標月的最後一天,這也是人們讀日曆時實際採用的方式。
加 30 天等於加一個月嗎?
不等。30 天是固定間隔,一個月的長度在 28 到 31 天之間變化。只有從 1 號開始的 31 天月份,兩者才碰巧一致。
會處理閏年嗎?
會。2 月 29 日加一年,在非閏年會變成 2 月 28 日;結果區還會標出目標年份是不是閏年。
能做減法嗎?
能。切換運算子為減號,或直接點「切換 + / −」。
「當年第幾天」是什麼意思?
這個日期在當年的序號:1 月 1 日是第 1 天,12 月 31 日是第 365 天(閏年第 366 天)。
能算兩個日期之間的天數嗎?
這個工具做的是加減。兩個日期之間的間隔,可以看「距今天數」,或用專門的日期差工具。