什麼是 Unix 時間戳記?Epoch 時間的完整說明
快速解答
Unix 時間戳記是自 1970 年 1 月 1 日 00:00:00 UTC(Unix 紀元)以來的秒數。它與時區無關且易於比較。 JavaScript 使用毫秒(13 位數); Unix 和大多數 APIs 使用秒(10 位數)。使用我們免費的時間戳轉換器在時間戳記和人類可讀日期之間進行轉換。
介紹
Unix 時間戳(也稱為 Unix 紀元時間、POSIX 時間或 Unix 時間)是自 1970 年 1 月 1 日 00:00:00 UTC(稱為 Unix 紀元的時刻)以來經過的秒數。時間戳廣泛應用於作業系統、資料庫、日誌和 APIs 中,因為它們與時區無關(始終為 UTC)、易於比較(簡單整數比較)且緊湊。然而,它們不是人類可讀的——如果不進行轉換,1693526400 就毫無意義。本指南解釋了什麼是時間戳記以及如何使用它們。
步步
-
了解 Unix 紀元
Unix 紀元是 1970 年 1 月 1 日 00:00:00 協調世界時 (UTC)。 Unix 時間戳記是從此時開始的秒數。正時間戳位於紀元之後;負時間戳(某些系統支援)位於其之前。
-
區分秒和毫秒
Unix 時間戳通常以秒為單位(截至 2026 年為 10 位數字,例如 1693526400)。 JavaScript 的 Date.now() 和 Date.getTime() 會傳回毫秒(13 位元數字,例如 1693526400000)。總是檢查 API 需要哪個單位 - 混合它們是最常見的時間戳錯誤。
-
了解時區獨立性
Unix 時間戳記始終為 UTC。它們不依賴使用者的時區。若要顯示特定時區的時間戳,請將其轉換為日期並套用時區偏移。這使得時間戳非常適合存儲和比較。
-
了解 2038 年議題
使用 32 位元有符號整數作為時間戳的系統將在 UTC 時間 2038 年 1 月 19 日 03:14:07 發生溢出,即「Y2038 問題」。使用 64 位元整數或 JavaScript 數字(64 位元浮點數)的系統不受影響。現代系統在很大程度上是 2038 年安全的,但傳統嵌入式系統可能不是。
範例
已知日期的時間戳
輸入: 2023-09-01 00:00:00 世界標準時間
輸出: 1693526400(秒)或 1693526400000(毫秒)
Unix時代
輸入: 1970-01-01 00:00:00 世界標準時間
輸出: 0
Y2038問題邊界
輸入: 2038-01-19 03:14:07 世界標準時間
輸出: 2147483647(最大 32 位元有符號整數)
常見問題
- 混合秒和毫秒-JavaScript 使用毫秒 (Date.now()),Unix 和大多數 APIs 使用秒。除以 1000 將毫秒轉換為秒;乘以 1000 則相反。
- 時區混亂-時間戳記是 UTC。顯示時,轉換為使用者本地時區或指定UTC。不要對原始時間戳套用偏移量。
- 2038 年問題 — 32 位元有符號整數時間戳在 2038 年 1 月 19 日溢位。使用 64 位元整數或 JavaScript 數字可以避免這種情況。
- 负时间戳 — 1970 年 1 月 1 日之前的日期具有负时间戳。有些系統不支援它們。
提示
- 始終檢查 API 是否需要秒或毫秒——這是最常見的時間戳錯誤。
- 在 APIs 中使用 ISO 8601 字串(例如「2023-09-01T00:00:00Z」)作為人類可讀取的時間戳;使用Unix紀元進行儲存和計算。
- JavaScript Date.now() 傳回毫秒;除以 1000 並向下取整即可得到秒數。
- 使用我們的時間戳轉換器在瀏覽器中的時間戳記和人類可讀日期之間進行轉換。