使用 Unix 時間戳記:把紀元時間講簡單
更新 2026-07-06
打開一個 API 回應或資料庫的一列,你常會發現日期被存成像 1751760000 這樣的普通數字。那就是 Unix 時間戳記,海量軟體用它來記錄時間。本指南講清這個數字是什麼意思、為什麼電腦這樣計時,以及那些坑 —— 秒 vs. 毫秒、時區,還有 2038 年問題。
什麼是 Unix 時間戳記
Unix 時間戳記是自一個叫 紀元(epoch) 的固定時刻 —— 1970 年 1 月 1 日 00:00:00 UTC —— 以來經過的 秒 數。所以 0 就是紀元本身,60 是它之後一分鐘,1751760000 是 2025 年的某一刻。它只是一個不斷累加的秒計數。
為什麼從 1970 年開始數秒?
把時間表示成單一整數對電腦極其方便。比較兩個時刻變成比較兩個數字;求它們之間的間隔是減法;給事件排序不過是給整數排序 —— 全都不必去推敲日曆、月份、閏年或時區。1970 這個起點是 Unix 作業系統早期的一個歷史選擇,就這麼沿用了下來。
秒 vs. 毫秒的坑
這是幾乎人人至少踩一次的錯誤。Unix 時間戳記傳統上以 秒 為單位,但許多系統 —— 尤其是 JavaScript —— 用 毫秒(千分之一秒)。兩者相差 1000 倍:
秒: 1751760000 毫秒: 1751760000000
把一個秒值餵給期待毫秒的東西,你的日期會落在 1970 年;反過來則會落到幾萬年後的未來。快速自檢:目前的時間戳記,秒 是 10 位;毫秒 是 13 位。當一個轉換出來的日期看著荒唐時,幾乎總是這個原因。
時區與 UTC
Unix 時間戳記的一個關鍵優勢:數字本身 永遠是 UTC。它代表一個精確的時刻,對地球上每個人都相同。時間戳記 1751760000 是單一時刻;它顯示為倫敦的下午 4 點還是紐約的上午 11 點,純粹是最後才施加的顯示選擇。把時間存成 UTC 時間戳記、只在顯示時才轉成本地時間,能整類地避開時區 bug。要在不同地區看同一時刻,時區轉換器 正是幹這活的工具。
與人類日期互相轉換
你會不斷需要雙向轉換 —— 把時間戳記變成可讀日期來除錯日誌,或把日期變成時間戳記來查詢 API。我們的 Unix 時間戳記轉換器 即時完成兩者,並以你的本地時間和 UTC 顯示結果。若改為測量兩個日期之間的間隔,日期差計算器 直接搞定。
2038 年問題
較舊的系統把時間戳記存成 有號 32 位元整數,它只能數到 2,147,483,647。這個上限在 2038 年 1 月 19 日 03:14:07 UTC 到達 —— 一秒之後計數器溢位、回繞成負數,把日期拋回 1901 年。這和 Y2K 是同一類 bug。修復早已普及:用 64 位元整數,把極限推到約 2920 億年之後。大多數現代軟體沒問題,但在碰舊系統時值得知道。
速查
- Unix 時間戳記 = 自 1970 年 1 月 1 日 UTC 以來的秒。
- 10 位 = 秒;13 位 = 毫秒。
- 值永遠是 UTC —— 只在顯示時施加時區。
- 32 位元儲存在 2038 年出問題;64 位元不會。
更多 網路與開發者
查看全部 網路與開發者 指南 →本指南提到的工具