紀元時間戳詳解:Unix 時間、POSIX 時間與自 1970 年起的秒
紀元時間戳是把某個時刻表示為自固定起點以來經過時間的精簡方式。本指南解釋 Unix 時間、POSIX 時間戳、Unix 紀元日期,以及為什麼自 1970 年 UTC 起的秒成為軟體中的預設值。
什麼是 epoch 時間戳?
epoch 時間戳是從一個稱為 epoch 的固定參考時刻起測量的數字計數。在開發者日常用法中,epoch 時間戳通常指 Unix 時間戳:自 1970 年 1 月 1 日 00:00:00 UTC 起的秒數。值為 0 即精確的 Unix 紀元。正值在 1970 年之後,負值在之前。
Unix 時間 vs POSIX 時間戳
在應用程式碼中,Unix 時間與 POSIX 時間戳通常可互換使用。兩者都指自 Unix 紀元起經過的秒數,為簡化民用時間而忽略閏秒。實際結果是一個穩定的整數,可跨作業系統、語言、資料庫、API 與日誌檔案使用。
- Unix 紀元日期:1970-01-01 00:00:00 UTC
- Unix 時間戳 0:Unix 紀元的精確起點
- POSIX 時間戳:POSIX 相容系統中自 Unix 紀元起的秒
- epoch 毫秒:同一紀元,但以毫秒計
- epoch 微秒或奈秒:用於資料庫與追蹤的更高精度
為什麼以 1970 年為起點的時間戳成為標準
Unix 紀元對早期 Unix 系統很實用,隨著 Unix 思想擴展到 C 函式庫、Linux、資料庫、Web 伺服器與程式語言,它成為慣例。單個數字時間戳比本地化的日期字串更易於排序、比較、傳輸與儲存。
epoch 時間戳範例
幾個已知的值能讓定義更容易記住。
- 0 = 1970-01-01 00:00:00 UTC
- 1 = 1970-01-01 00:00:01 UTC
- 86400 = 1970-01-02 00:00:00 UTC
- 1700000000 = 2023-11-14 22:13:20 UTC
- 1767225600 = 2026-01-01 00:00:00 UTC
epoch 時間戳常見問題
- epoch 時間和 Unix 時間一樣嗎?
- 在開發者常見用法中,是的。epoch 時間通常指 Unix 時間:自 1970-01-01 00:00:00 UTC 起經過的秒數。
- Unix 時間的定義是什麼?
- Unix 時間定義為自 1970-01-01 00:00:00 UTC 起的秒數,不計閏秒。
- POSIX 時間戳是否帶時區?
- 不帶。POSIX 時間戳表示一個瞬間。只有在把該瞬間格式化為可讀日期時才套用時區。
- epoch 時間戳在 Windows、Linux 與 macOS 上一樣嗎?
- Unix 紀元(1970-01-01 00:00:00 UTC)在現代平台與語言中是一致的,因此同一瞬間在各處都得到相同的 Unix 時間戳。Windows 內部使用自己的 FILETIME 紀元(1601),但標準的 Unix 與 POSIX 時間戳使用 1970 年。
More posts
什麼是 UTC 時間?含義、偏移與轉換詳解Unix 時間轉日期:把 Unix 時間戳轉換為可讀時間epoch 轉換器指南:轉換紀元時間、Unix 時間和時間戳日期轉 epoch:把時間轉換為 Unix 時間戳或紀元時間epoch 毫秒轉日期:轉換 13 位時間戳和 long 值當前 Unix 時間戳:紀元時鐘、UTC 時間與即時 Unix 時間2026 年初的 Unix 時間戳:1767225600 詳解JavaScript Date.now():取得與轉換 Unix 時間戳毫秒 vs 秒:讓每個應用都崩潰的單位混淆在資料庫中儲存時間戳:DATETIME vs INT vs BIGINT無需函式庫的 JavaScript 時區正確日期格式化每個開發者都發布過的 7 個 Unix 時間戳 bug紀元時間詳解:Unix 時間戳零是什麼?