Epoch 時間轉換器
將 Unix 時間戳轉換為 UTC 日期,或將日期轉換為 Epoch 秒數。
如何使用此 Epoch 時間轉換器
- 選擇轉換模式
在「轉換模式」欄位中選擇「Epoch 轉日期」或「日期轉 Epoch」。
- 對於 Epoch 轉日期
在「Epoch 時間戳(秒)」欄位中輸入以秒為單位的 Unix 時間戳。
- 對於 日期轉 Epoch
在「日曆日期」中選擇日期,然後根據需要設定「小時 (UTC)」、「分鐘 (UTC)」和「秒 (UTC)」。
- 讀取結果
此計算器顯示 UTC 值、Unix 毫秒以及星期幾。
此 Epoch 時間轉換器的工作原理
此 Epoch 時間轉換器可在 Unix 時間戳與易於閱讀的 UTC 日期之間進行轉換。Unix 時間(也稱為 POSIX 時間或 Epoch 時間)是指自 Unix Epoch(定義為 1970 年 1 月 1 日午夜 UTC,即 1970-01-01T00:00:00Z)以來所經過的秒數。這種單一整數表示法是資料庫、API、日誌文件、JWT 令牌以及幾乎所有現代編程語言中存儲和傳輸時間戳的事實標準。此轉換器支援雙向轉換:輸入數字時間戳會返回對應的 UTC 日期、星期和毫秒值;而輸入日曆日期和時間則會返回以秒和毫秒為單位的 Epoch 值。
Unix 時間 = 自 1970-01-01T00:00:00Z 起經過的秒數 要將 Unix 時間戳 1,700,000,000 轉換為日期:從 1970-01-01 00:00:00 UTC 開始,增加 1,700,000,000 秒。這等於 19,675 天、17 小時、46 分鐘和 40 秒。得到的 UTC 日期是 2023-11-14 22:13:20 UTC,當天是星期二。毫秒等值為 1,700,000,000,000。相反地,輸入 2023 年 11 月 14 日 22:13:20 UTC 會返回正好 1,700,000,000 的 epoch 值。
時間戳記 0 轉換為 1970-01-01 00:00:00 UTC(星期四)。對應的毫秒值為 0。
時間戳記 1,704,000,000 轉換為 2023-12-31 12:00:00 UTC(星期日)。在「日期轉紀元」模式下輸入該日期和時間將返回 1,704,000,000。
- ✓ 所有計算均以 UTC 為準。本地時間轉換需在轉換後套用相應的時區偏移量。
- ✓ 不計算閏秒。與 POSIX 相同,此轉換器將每一天視為精確的 86,400 秒,這符合大多數程式語言和作業系統的行為。
- ✓ 負數時間戳表示 Unix 紀元(1970 年 1 月 1 日)之前的日期。例如,-86400 對應於 1969 年 12 月 31 日。
- ✓ 毫秒時間戳在輸入前應除以 1,000;此轉換器接受秒作為輸入,並在結果中顯示對應的毫秒值。
- JavaScript 的 Date.now() 和 Java 的 System.currentTimeMillis() 返回的是毫秒而非秒 — 在此輸入數值前請先除以 1,000,或使用毫秒輸出進行比較。
- 2038 年問題會影響 32 位元有符號整數時間戳,這些時間戳將在 2038 年 1 月 19 日 03:14:07 UTC 發生溢位。大多數現代系統已遷移至 64 位元時間戳。
- 在調試 API 回應或日誌文件時,請留意看起來正好偏差 3,600 或 7,200 秒的時間戳 — 這通常表示在處理過程中的某個環節套用(或忽略)了時區偏移。
- Epoch 時間始終單調遞增(忽略閏秒調整),這使其成為排序事件、計算持續時間以及生成基於時間的唯一識別碼的理想選擇。
- IEEE Std 1003.1 (POSIX) — Epoch 以來的秒數定義
- Unix epoch 起源 — Unix Heritage Society 與 Bell Labs 文檔
- RFC 3339 — 網際網路上的日期與時間:時間戳
什麼是 Unix 時間戳記?
Unix 時間戳記是自 1970 年 1 月 1 日 UTC 午夜(即 Unix 紀元)以來所經過的秒數。這個單一整數是在資料庫、API、日誌文件和大多數程式語言中表示時間的事實標準。由於它與時區無關且單調遞增,因此簡化了排序、時長計算和基於時間的比較。JavaScript 的 Date.now() 和許多 API 會返回毫秒(1,000 × 秒),因此在此輸入毫秒值之前請先除以 1,000。負數時間戳記代表 1970 年之前的日期;例如,−86400 正好是紀元前的一天。
開發者使用紀元時間的場景
開發者在資料庫中存儲事件時間、在 JSON API 中序列化日期、生成基於時間的快取鍵以及調試日誌條目時會使用 Unix 時間戳記。資料庫欄位通常將時間戳記存儲為整數,以便進行高效的索引和範圍查詢。API 回應經常返回紀元秒數或毫秒數,以避免時區歧義。在調試時,將日誌或 JWT 聲明中的原始時間戳記轉換為人類可讀的日期,可以快速顯示該值是否正確或是否存在時區偏差。紀元時間還用於速率限制、會話過期以及在分散式系統中生成可排序的唯一識別碼。
Epoch 時間轉換器常見問題
什麼是 Unix epoch?
Unix epoch 是衡量 Unix 時間的參考點:1970 年 1 月 1 日午夜 UTC (1970-01-01T00:00:00Z)。時間戳 0 對應的就是那個時刻。
為什麼我的 JavaScript 時間戳位數較多?
JavaScript 的 Date.now() 回傳的是自 Epoch 以來的毫秒數,而非秒數。請除以 1,000 以轉換為此工具使用的秒數格式,或直接與毫秒輸出進行比較。
我可以輸入負的時間戳嗎?
可以。負值代表 Epoch 之前的日期。例如,-86400 對應於 1969-12-31T00:00:00Z,即 Epoch 前整整一天。
這會處理閏秒嗎?
不會,這符合 POSIX 標準。POSIX 時間假設每天固定為 86,400 秒。自 1972 年以來插入的 27 個閏秒並未單獨表示,這意味著在閏秒邊界處,UTC 與 Unix 時間可能會有高達一秒的差異。
什麼是 2038 年問題?
將 Unix 時間儲存為 32 位元有號整數的系統,將在 2038 年 1 月 19 日 03:14:07 UTC 發生溢位,轉變為一個巨大的負數並產生 1901 年的日期。大多數現代平台現在使用 64 位元時間戳,在超過 2,900 億年內都不會溢位。