什麼是 epoch 毫秒時間戳?
Unix epoch 時間戳用來計算自 1970-01-01 00:00:00 UTC(也就是所謂的「紀元起點 epoch」)以來經過的時間。許多程式語言與 API(例如 JavaScript 的 Date.now()、Java 的 System.currentTimeMillis(),以及大量 JSON 資料)都是以毫秒而非秒來表示這個數值。這個轉換工具能把這串看不懂的數字,轉成清楚易讀的 UTC 日期與時間。
如何使用這個轉換器
把你的毫秒時間戳貼上或輸入到欄位中,然後送出即可。工具會先將數值除以 1000 取得完整的秒數,再從 epoch 起點開始對應到日曆上的時間。你會得到完整的 ISO 8601 字串(例如 2023-11-14T22:13:20Z),以及拆解後的年、月、日、時、分、秒——全部以 UTC 呈現,因此結果不會受到你所在時區的影響。
計算公式說明
整個轉換只有兩個簡單步驟。首先,\(\text{seconds} = \left\lfloor \text{ms} / 1000 \right\rfloor\) 會去掉不足一秒的餘數;接著,\(\text{date} = \text{epoch} + \text{seconds}\) 把這些秒數加到 1970 年 1 月 1 日的午夜上。閏年、各月份天數不同等日曆規則,系統都會自動處理。
$$\text{Date}_{\text{UTC}} = \text{Epoch}_{1970}\;+\;\frac{\text{Epoch Time (ms)}}{1000}\ \text{seconds}$$
$$\begin{gathered} \text{Date}_{\text{UTC}} = \text{Epoch}_{1970} + t_{s}\ \text{seconds} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} t_{s} &= \left\lfloor \dfrac{\text{Epoch Time (ms)}}{1000} \right\rfloor \\ \text{Epoch}_{1970} &= \text{1970-01-01T00:00:00Z} \end{aligned} \right. \end{gathered}$$
實際範例
以 1,700,000,000,000 毫秒為例。除以 1000 後得到 1,700,000,000 秒。把它加到 epoch 起點,就會落在 2023-11-14T22:13:20Z——也就是 2023 年 11 月 14 日 22:13:20(UTC)。
$$\left\lfloor \frac{1{,}700{,}000{,}000{,}000}{1000} \right\rfloor = 1{,}700{,}000{,}000\ \text{seconds} \;\Rightarrow\; \text{2023-11-14T22:13:20Z}$$
常見問題
結果是我所在地的當地時間嗎?不是。為了避免混淆,輸出一律採用 UTC(協調世界時)。如果你需要當地時間,請自行加上所在時區的時差。例如台灣為 UTC+8,需在結果上加 8 小時。
如果我手上的是秒、不是毫秒怎麼辦?請先把以秒為單位的時間戳乘以 1000 再輸入,或直接在後面補上三個零即可。
為什麼有時換算出來的日期會落在很遙遠的未來或 1970 年附近?把以「秒」為單位的數值當成毫秒輸入時,結果會接近 1970 年;而把本來就是「毫秒」的數值又多補了幾個零,結果就會跑到很遠的未來。記得隨時確認你的單位確實是毫秒。