所有指南

把 Unix 時間戳記轉換成日期,再把日期轉換回時間戳記

發布於 · 更新於 閱讀約 2 分鐘

Unix 時間戳記統計的是自世界協調時間 1970 年 1 月 1 日午夜以來經過的時間。兩個問題決定最終的日期:數字的單位,以及您讀取結果所用的時區。

一個參考值

轉換 Unix 時間戳記 會給出同一時刻的三種讀法。以 1700000000 為例,瀏覽器設為巴黎時間:

讀法結果
UTC 日期Tue, 14 Nov 2023 22:13:20 GMT
本地日期2023 年 11 月 14 日 23:13:20 UTC+1
ISO2023-11-14T22:13:20.000Z

本地時間跟隨瀏覽器的時區:巴黎冬季多一小時。同一個時間戳記只是一個時刻,在兩個時區中讀取而已。

單位根據位數識別

預設設定會根據數字的長度識別單位。下面三個值表示同一個時刻,精度不同。

數字位數識別出的單位得到的時刻
170000000010秒2023 年 11 月 14 日 22:13:20 UTC
170000000000013毫秒2023 年 11 月 14 日 22:13:20 UTC
170000000012345616微秒2023 年 11 月 14 日 22:13:20.123 UTC

規則:最多 11 位為秒,12 到 14 位為毫秒,15 和 16 位為微秒。“毫秒”設定會強制使用該單位。

規則的陷阱

由於單位是根據長度推斷的,含糊的值只會按一種方式讀取:10000000000(11 位)得到 2286 年 11 月 20 日,100000000000(12 位)得到 1973 年 3 月 3 日。早於 1973 年 3 月的毫秒時間戳記只有 11 位或更少,會被當作秒來讀取:此時請強制使用“毫秒”設定。

1970 年之前的值與 2038 年的上限

負數表示 1970 年之前的時刻:-1 得到 1969 年 12 月 31 日 23:59:59 UTC,0 得到 1970 年 1 月 1 日午夜。

數字 2147483647 是有符號 32 位整數能容納的最大值:它得到 2038 年 1 月 19 日 03:14:07 UTC。下一個數 2147483648 得到 03:14:08:工具可以不受限制地繼續,但用 32 位儲存時間的系統做不到。

把日期轉換成時間戳記

輸入日期而不是數字:工具會給出以秒和毫秒表示的時間戳記。

輸入以秒為單位的時間戳記讀法
2026-01-011767225600世界協調時間的午夜,未給出時區
2026-01-01T10:30:00+01:001767259800巴黎時間 10:30,即世界協調時間 09:30
2024-02-291709164800接受閏年

沒有時區的日期按世界協調時間讀取,而不是本地時間:工具會在結果中說明。不存在的日期,比如 2026 年 2 月 30 日,會被拒絕並給出提示。

常見錯誤

  • 把毫秒當作秒來讀:日期會落到幾千年以外。
  • 忘記時區:按本地時間讀取的日期,再按世界協調時間傳送,會偏差一小時或更多。
  • 寫日期時不帶時區,心裡卻想著本地時間,而它會按 UTC 被讀取。

想計算兩個日期之間相隔的天數,請參閱 計算兩個日期之間相隔的天數。

檢查轉換

  1. 重新讀一遍 UTC 那一行,它不依賴於裝置。
  2. 檢查結果第一行宣告的單位。
  3. 把得到的日期再轉換回去:應該得到起始的數字。

轉換 Unix 時間戳記