時間戳 | 紀元時間 | 轉換

> 時間戳 | 紀元時間 | 轉換 <

// 即時將Unix時間戳轉換為日期,或將日期轉換為時間戳

當前時間戳
[即時]

即時時鐘

即時更新的Unix時間戳顯示。即時查看當前的epoch時間。

[雙向]

雙向轉換

將時間戳轉換為可讀日期,或將日期轉換為時間戳。支援兩個方向。

[免費]

多種格式

以ISO 8601、RFC 2822、UTC、本地時間和相對時間格式查看結果。

// 關於UNIX時間戳

Unix時間戳工作原理:

Unix時間戳(也稱為epoch時間或POSIX時間)表示自1970年1月1日 00:00:00 UTC(Unix紀元)以來經過的秒數。這個簡單的整數值提供了一種通用的、不依賴時區的時間表示方式。

範例:

1711324800 → 2024-03-25T00:00:00.000Z

常見用例:

  • >資料庫時間戳儲存和查詢
  • >API回應時間欄位
  • >日誌檔案時間戳分析
  • >除錯時間相關問題
  • >跨時區時間協調
  • >Y2K38問題:32位元有號整數將在2038年1月19日溢出

>> 常見問題

問:什麼是Unix時間戳?

答:Unix時間戳是自1970年1月1日 00:00:00 UTC以來經過的秒數。它是計算機科學中普遍使用的簡單整數值。

問:什麼是epoch時間?

答:Epoch時間是Unix時間戳的另一個名稱。「紀元」指的是參考點:1970年1月1日 00:00:00 UTC。

問:什麼是Y2038問題?

答:2038年問題(Y2K38)是因為許多系統將Unix時間戳儲存為32位元有號整數,只能表示到2038年1月19日 03:14:07 UTC的時間。

問:秒和毫秒時間戳有什麼區別?

答:秒級Unix時間戳為10位數(如:1711324800),毫秒級為13位數(如:1711324800000)。

問:Unix時間戳可以是負數嗎?

答:可以,負的Unix時間戳表示1970年1月1日之前的日期。例如,-86400表示1969年12月31日。

// 常見的 epoch 數值

除錯時間戳時很有用的參考點,所有日期均為 UTC。

Epoch 數值日期和時間(UTC)
01970-01-01 00:00:00
864001970-01-02 00:00:00
9466848002000-01-01 00:00:00
10000000002001-09-09 01:46:40
12345678902009-02-13 23:31:30
17000000002023-11-14 22:13:20
20000000002033-05-18 03:33:20
21474836472038-01-19 03:14:07
42949672952106-02-07 06:28:15

// 在程式碼中將 epoch 轉換為日期

JavaScript  new Date(epoch * 1000).toISOString()
Python      datetime.fromtimestamp(epoch, tz=timezone.utc)
PHP         gmdate('c', $epoch)
Go          time.Unix(epoch, 0).UTC()
Java        Instant.ofEpochSecond(epoch)
MySQL       FROM_UNIXTIME(epoch)
Bash        date -u -d @$epoch   # macOS: date -u -r $epoch

>> 更多問題

問:為什麼 Unix 時間從 1970 年 1 月 1 日開始?

答:1971 年前後,貝爾實驗室的早期 Unix 開發者選了一個簡單、整齊且當時較新的日期,以便讓 32 位元計數器保持較小。它沿用至今,成為大多數系統的標準紀元。

問:如何在 Excel 或 Google 試算表中把 epoch 轉成日期?

答:假設 A1 是 epoch 秒數,輸入 =(A1/86400)+25569,再把儲存格格式設為日期時間。毫秒則除以 86400000。反向公式為 =(A1-25569)*86400。

問:為什麼 epoch 轉換結果和預期的日期不一樣?

答:常見原因:秒與毫秒混淆(13 位數是毫秒)、顯示時區不同(同一個 epoch 在 UTC 與本地時間顯示不同)、系統使用了其他紀元(NTP 為 1900 年,Windows FILETIME 為 1601 年)。

問:epoch 的最大值是多少?

答:有號 32 位元整數最大為 2,147,483,647(2038-01-19 03:14:07 UTC),無號 32 位元為 4,294,967,295(2106-02-07 06:28:15 UTC)。64 位元數值可表示數千億年。

// 其他語言