支柱內容
時間戳與時區指南
一份面向實戰的時間參考,幫助你做時間戳轉換、時區比對,並避開最常見的「差幾小時」問題。
大多數時間問題並不是算錯了,而是預設前提不一致:後端存的是 UTC,前端顯示的是本機時間;報表只寫日期,不寫時區;秒級時間戳被當成毫秒級處理。一旦發生,表面看起來像隨機錯誤,根因其實非常穩定。
第一問:來源時間到底屬於哪個時區?
不要一上來就轉換數字,先把原始時區、目標顯示時區,以及兩者之間的格式邊界說清楚。只要這三者有一個是隱含的,轉換就已經不安全。真正可靠的流程,會在發版說明、Cron 任務或會議排程產生之前把這三件事寫明。
最浪費排查時間的幾類錯誤
最致命的一類是把秒和毫秒混用;第二類是把本機牆上時間序列化成了看似 UTC 的值;第三類是顯示 ISO 字串時不告訴使用者它屬於哪個時區。只要測試資料沒跨夏令時邊界、也沒跨地區交接,這三類問題都很可能躲過單元測試。
- 文件和介面裡的可讀時間,必須帶明確時區標示。
- 排查時把原始 epoch 值和格式化字串並排保留。
- 涉及排程邏輯時,至少跨兩個地區測一個例子再上線。
一套實用的瀏覽器核對法
先把時間戳轉成 UTC,再轉成目標時區,最後和原始業務預期對照。如果任務裡還包含日期加減,把這一步單獨做,不要把「時區換算」和「日期運算」混在一個腦內跳躍裡。把步驟拆開,比憑感覺猜可靠得多。
延伸閱讀
指南與工作流程
相關工具
工具庫