指南 / 基礎

什麼是 Unix 時間戳?

準確理解 Unix 紀元、UTC、負數時間戳、常見單位,以及一個 epoch 數值真正代表什麼。

簡明定義

Unix 時間戳是自 1970-01-01T00:00:00Z 起經過時間的有號計數。經典定義使用秒,但現代 API 也使用毫秒、微秒和奈秒,因此一個沒有單位的數字並不完整。

時間戳 0 就是 Unix 紀元;-1 秒是 1969-12-31T23:59:59Z。只要執行環境與儲存類型支援,負數時間戳完全有效。

UTC 與時區

時間戳識別 UTC 時間線上的絕對時刻,不帶有城市、國家、日光節約時間規則或偏好顯示格式。同一數值在臺北與紐約會顯示成不同鐘點,但仍是同一時刻。

閏秒

Unix 時間通常把每一天視為 86,400 秒,不把閏秒編碼成獨立的編號秒。對一般 Web、API 和資料庫工作,這是預期規則;科學計時系統可能採用其他時間尺度。

可重現範例

1700000000 秒轉換為 2023-11-14T22:13:20.000Z。乘以 1,000 得到 1700000000000 毫秒,單位改變但時刻不變。

從 API 或紀錄讀取時間戳

created_at 這類欄位可能保存 ISO 字串、Unix 秒或毫秒,僅憑名稱無法判斷格式。先查閱介面文件,再將數值放入時間戳轉日期工具,明確選擇單位。確認 UTC 日期符合事件時間後,再複製結果。

Unix 秒UTC 日期含義
-11969-12-31 23:59:59紀元前一秒
01970-01-01 00:00:00Unix 紀元起點
17000000002023-11-14 22:13:20常見的現代時間戳
21474836472038-01-19 03:14:07帶正負號的 32 位元秒數上限

同一時刻為何顯示不同日期?

1700000000 在 UTC 是 11 月 14 日 22:13:20,在上海是 11 月 15 日 06:13:20,在紐約是 11 月 14 日 17:13:20。時間戳沒有改變,改變的是時區下的日曆表示。可在時間戳時區工具核對。

常見 POSIX 時間戳不會將閏秒作為額外的普通秒計入,因此不是精確的原子鐘計數。裝置時鐘也可能被系統校時修正。測量程式執行時間應使用 JavaScript 的 performance.now() 等單調時鐘,而非直接相減兩次裝置日期。

保存數值也保存單位約定

資料庫欄位或 API 文件應註明秒、毫秒、微秒或奈秒。日期異常時,先閱讀秒與毫秒的差異,不要直接補零嘗試。若輸入是某地的日曆日期,使用日期轉時間戳並指定來源時區。

標準與執行環境參考

工具 / 01—06

更多時間戳工具

每個工具都從明確的輸入開始,提供明確的結果。