Unix 時間戳與 UTC
Unix epoch 是什麼、秒與毫秒時間戳的區別,以及如何與本地時間互相轉換。
Unix 時間戳是從 1970-01-01 00:00:00 **UTC** 開始計算的秒數(或毫秒數)。它不包含時區資訊——同一組數字在全球代表同一瞬間,顯示為本地時間則需依賴 IANA 時區規則。伺服器日誌、API 和資料庫常使用此格式。
秒與毫秒
- Unix 秒:10 位數字,例如 1700000000
- JavaScript Date:毫秒,13 位數字
- 混淆兩者會導致 1000 倍時間誤差——常見程式錯誤
- 2038 年問題:32 位元系統限制在現代 64 位元系統已基本解決
與本地時間的關聯
時間戳轉本地時間:軟體會套用 IANA 時區規則。本地時間轉時間戳:需先確定時區與夏令時狀態,再換算為 UTC 瞬間——概念與 UTC 基礎 相同。使用者若需解讀 UTC 日誌,可用 轉換 轉換為所在地時間。
最佳實踐
- 儲存與傳輸使用 UTC 或時間戳;僅在用戶介面本地化
- 切勿儲存不含時區偏移的模糊本地時間字串
- API 文件需明確標註使用秒或毫秒
- 時區規則參考:什麼是 IANA 時區資料庫(位於 指南)