NTP Timestamp

NTP 轉 Unix 時間戳轉換器

把 NTP 轉換為 Unix 時間。精確公式與大數支援。輸出:秒、毫秒、ISO 8601 與可讀格式。

自 1900-01-01 UTC 以來的秒數

目前時間 — NTP 時間戳
Unix 時間戳(秒)

什麼是 NTP 時間戳記?

網路時間協定(NTP)從 1900 年 1 月 1 日 00:00:00 UTC 起計時。經典的 64 位 NTP 時間戳記分為 32 位的秒計數和 32 位的秒小數部分。本轉換器處理整數秒欄位(你最常需要轉換的值)。

  • 紀元:1900-01-01 00:00:00 UTC
  • 格式:32 位秒 + 32 位秒小數(約 233 皮秒解析度)
  • 目前值約為 3.9 × 10^9
  • 常見於:NTP/SNTP 封包、RADIUS、某些日誌和遙測格式

如何將 NTP 轉換為 Unix 時間戳記

1900 與 1970 之間相差 2,208,988,800 秒。從 NTP 秒欄位中減去這個常數即可得到 Unix 秒。

  • Unix seconds = NTP − 2208988800
  • 範例:3908988800 → 1700000000 → 2023-11-14 22:13:20 UTC
  • 反向:NTP = Unix seconds + 2208988800
  • 32 位小數欄位 ÷ 2^32 給出次秒部分

NTP 紀元與 2036 翻轉

32 位的秒欄位大約每 136 年溢位一次。第一個 NTP 紀元在 2036 年 2 月 7 日結束,之後秒計數器回繞為零,必須單獨追蹤一個「紀元號」。盲目地減去 2,208,988,800 僅在紀元 0 內有效;對於 2036 翻轉之後的時間戳記,必須每個紀元加上 2^32 秒。對於今天的日期,簡單的減法是正確的。

  • 紀元 0 涵蓋 1900 至 2036-02-07
  • 翻轉之後,在減去偏移之前加上 4294967296 × eraNumber
  • NTP 時間戳記是 UTC,且不在秒欄位中編碼閏秒

相關時間戳記格式轉換器

相鄰的時間協定

NTP 最常見,但其周邊生態還包括:

  • SNTP:簡單 NTP,相同的線路格式,精度較低且無時鐘紀律
  • PTP(IEEE 1588):用於金融和廣播的奈秒級精度協定——線路格式不同,但紀元概念相似
  • Stratum 0 硬體(原子鐘、GPS 接收機)為 Stratum 1 伺服器提供時間源,後者再服務客戶端
  • NTP 時間戳記嵌入在 RADIUS Accounting(Event-Timestamp)和許多 IPsec 實作等協定中
  • 對於 UTC 閏秒處理,NTP 使用 leap indicator 欄位中的位元旗標;秒欄位本身不跳變

FAQ

什麼是 NTP 紀元?
NTP 計數自 1900 年 1 月 1 日 00:00:00 UTC 起的秒數。
如何把 NTP 時間轉換為 Unix 時間?
從 NTP 秒值中減去 2,208,988,800 秒,即可得到一個 Unix 時間戳記。
2036 年 NTP 會發生什麼?
32 位秒計數器會在 2036 年 2 月 7 日溢位並歸零,開啟 NTP 紀元 1。轉換器必須追蹤紀元編號,才能正確解釋之後的時間戳記。