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。轉換器必須追蹤紀元編號,才能正確解釋之後的時間戳記。