重點摘要
- 01Unix 時間戳計算從 1970 年 1 月 1 日 00:00:00 UTC(稱為 epoch)到現在經過的秒數。
- 0210 位數通常是秒、13 位數通常是毫秒——除以 1000 可以從毫秒轉換為秒。
- 03Unix 時間始終是 UTC,所以相同的時間戳在不同時區會顯示不同的時間。
一句話的定義
Unix 時間戳是從 1970 年 1 月 1 日 00:00:00 協調世界時(UTC)經過的秒數。這個起始時刻稱為 Unix epoch,所有時間戳都從它開始計算。你現在讀這句話時,時間戳值已經超過 17 億。
電腦之所以都同意用一個任意的日期,是為了效率考慮。單一整數遠比字串(如「2026 年 6 月 24 日下午 3:14(中歐夏令時)」)更容易存儲、比較和計算。排序事件、測量某件事花了多長時間,或檢查一件事是否在另一件事之前發生,歸根結底都是比較兩個整數。
因為計數是從 UTC 開始的,Unix 時間戳本身不包含時區資訊。同一個數字 1750000000 在地球上的任何地方都代表同一時刻——只是在東京和紐約顯示的時間不同。時區只有在將數字轉換回人類可讀的日期時才會被套用。
秒與毫秒:如何區分
傳統的 Unix 時間戳以秒為單位,但許多現代軟體(特別是 JavaScript)以毫秒為單位,這大 1000 倍。混淆這兩者是最常見的時間戳錯誤,會導致日期要麼在 1970 年,要麼在大約 5 萬年後。
最快的區分方法是位數。最近日期的秒數時間戳有 10 位(1750000000)。同一時刻的毫秒版本有 13 位(1750000000000)。如果一個值看起來大 1000 倍,幾乎肯定是毫秒——除以 1000 就可以得到秒。如果程式庫需要毫秒而你提供的是秒,就乘以 1000。
有些系統更精細:微秒(16 位)和納秒(19 位)出現在高解析度日誌和資料庫中。規則是相同的——每一步都是 1000 倍。如果不確定,將數字貼到轉換工具中,看產生的日期是否接近今天。
如何將 Unix 時間戳轉換為日期
你不需要手工計算。貼上數字,用你自己的時區和 UTC 讀取日期。
- 01
開啟 Unix 時間戳轉換工具
前往 Handytool 的 Unix 時間戳轉換工具。一切都在你的瀏覽器中運行,所以沒有任何資料被傳送到伺服器。
- 02
貼上數字
輸入時間戳。工具會根據其位數自動判斷是秒還是毫秒,所以你通常不需要指定。
- 03
讀取人類可讀的日期
看到日期和時間既以 UTC 顯示,也以你的本地時區顯示,這樣你可以確認正在讀取的是你期望的時刻。
- 04
反向操作
輸入日曆日期和時間,以取得對應的 Unix 時間戳,用於在資料庫、API 呼叫或排程工作中存儲。
為什麼是 1970,以及其他特異之處
Epoch 是在 1970 年代初由 Bell Labs 的 Unix 工程師選擇的。它需要是最近、圓整、方便的日期,1970 年初符合這些條件——足夠近使得計數器不會立即需要巨大的數字,又足夠遠以覆蓋他們關心的檔案和進程時間。負時間戳代表 1970 年之前的時刻,所以該系統也能處理歷史日期。
一個細微之處:Unix 時間忽略閏秒。真正的 UTC 偶爾會插入額外的一秒來保持與地球略微不規則的自轉一致,但 Unix 時間假裝每天恰好有 86,400 秒。這使算術運算保持簡單,代價是與嚴格的天文時間偏差幾分之一秒——這是幾乎每個人都樂意接受的折衷。
當你需要將時間戳與 Discord 事件、cron 排程或倒數計時對齊時,將轉換工具與時區工具配對會有幫助,這樣你可以在你的受眾所在的不同地區看到相同的時刻。
Unix 時間戳常見問題
Unix 時間戳是秒還是毫秒?
取決於系統。傳統的 Unix 時間是秒(當前日期是 10 位數);JavaScript 和許多網頁 API 使用毫秒(13 位)。從毫秒轉換為秒要除以 1000,反之要乘以 1000。
Unix 時間戳包含時區嗎?
不包含。Unix 時間始終以 UTC 計算,不攜帶時區。時區只在將數字轉換為可讀日期時才應用,這就是為什麼相同的時間戳在世界各地顯示不同的時間。
當前的 Unix 時間戳是什麼?
它每秒都在變化。截至 2026 年中期,大約是 17.5 億。開啟轉換工具查看即時值,並將任何特定日期轉換為其時間戳。
什麼是 epoch 時間?
"Epoch 時間"是 Unix 時間的另一個名稱。Epoch 是固定的起點——1970 年 1 月 1 日 00:00:00 UTC——epoch 時間是從它計算的秒數。
Unix 時間戳可以是負數嗎?
可以。1970 年 1 月 1 日之前的日期表示為負數,從 epoch 向後計算秒數。