Unix 時間戳:毀掉日期的四個陷阱
Unix 時間戳就是從 1970-01-01 UTC 起算的秒數。簡單——但時間戳製造的日期 bug 比任何其他格式都多。四個陷阱解釋了大部分。
1. 秒與毫秒
JavaScript 的 Date.now() 回傳毫秒;經典 Unix 時間和多數後端日誌用秒。10 位數字是秒,13 位是毫秒。混用會把 2026 年變成西元 53000 年——或者 1970 年。
2. UTC 與在地時間
時間戳本身沒有時區——它在任何地方都是同一瞬間。bug 出在:程式用伺服器時區而不是使用者時區去轉換;或者解析 2026-09-01 08:00 這種字串時沒說明它屬於哪個時區。
3. 夏令時間跳動
有夏令時間的時區一年跳兩次。一場會議如果存的是夏天和冬天各自的本地 09:00,對應的是兩個不同的 UTC 瞬間;存 UTC、顯示時才轉在地時間,能消滅這一整類 bug。
4. 按地區猜測解析
03/04/2026 在一個國家是 3 月 4 日,在另一個國家是 4 月 3 日。從文字解析日期必須顯式指定格式——永遠不要猜。
實用守則:存 UTC、只在顯示時轉換、格式永遠寫明。想檢查一個時間戳或日期字串,用時間戳轉換工具或世界時鐘並排對比——都在瀏覽器本地執行。