簡明定義
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 日期 | 含義 |
|---|---|---|
-1 | 1969-12-31 23:59:59 | 紀元前一秒 |
0 | 1970-01-01 00:00:00 | Unix 紀元起點 |
1700000000 | 2023-11-14 22:13:20 | 常見的現代時間戳 |
2147483647 | 2038-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 文件應註明秒、毫秒、微秒或奈秒。日期異常時,先閱讀秒與毫秒的差異,不要直接補零嘗試。若輸入是某地的日曆日期,使用日期轉時間戳並指定來源時區。