Unix 時間轉日期:把 Unix 時間戳轉換為可讀時間

把 Unix 時間轉換為日期格式的實用指南:UTC、本地時區、ISO 8601、資料庫 datetime 和可讀輸出。涵蓋 Unix 時間戳轉日期、Linux 時間轉日期,以及常見的秒與毫秒錯誤。

把 Unix 時間轉為日期是什麼意思

Unix 時間是一個數字,計數自 1970 年 1 月 1 日 00:00:00 UTC 起經過的時間。把 Unix 時間轉為日期,就是把這個數字變成日曆日期、時鐘時間與時區感知的顯示。時間戳本身與時區無關;UTC 還是本地時間只影響該瞬間如何向人顯示。

快速轉換規則

先辨識單位。現代 10 位的 Unix 時間戳通常是秒,13 位通常是毫秒。JavaScript Date 期望毫秒,而 Linux、Python、PHP、Go 與許多資料庫函式通常以秒運作。

  • Unix seconds to JavaScript Date: new Date(seconds * 1000)
  • Unix milliseconds to JavaScript Date: new Date(milliseconds)
  • Linux command: date -u -d @1700000000
  • Python UTC datetime: datetime.fromtimestamp(seconds, tz=timezone.utc)
  • PostgreSQL: SELECT to_timestamp(1700000000)

Unix 時間戳轉日期範例

範例是最快的方式來核對一個值是秒、毫秒還是其他單位。如果轉換出的年份接近 1970,你很可能把秒傳給了期望毫秒的 API。如果年份非常遙遠,你很可能把毫秒傳給了期望秒的 API。

  • 自紀元起 0 秒 = 1970-01-01 00:00:00 UTC
  • 自紀元起 1700000000 秒 = 2023-11-14 22:13:20 UTC
  • 自紀元起 1700000000000 毫秒 = 2023-11-14 22:13:20 UTC
  • 自紀元起 -86400 秒 = 1969-12-31 00:00:00 UTC
  • 自紀元起 1767225600 秒 = 2026-01-01 00:00:00 UTC

UTC 日期 vs 本地日期

Unix 時間戳表示一個精確的瞬間。UTC 是日誌、API 與偵錯最安全的基準。本地時間適合使用者介面、日曆與報表。同一個 Unix 時間戳在紐約、倫敦、上海與東京可能顯示為不同的日曆日期,尤其在 UTC 午夜附近。

  • 跨伺服器或地區比較事件時使用 UTC
  • 在應用中顯示日期時使用使用者的 IANA 時區
  • 需要機器可讀的 UTC 輸出時使用帶 Z 的 ISO 8601
  • 當本地日曆日期重要時使用時區轉換器

Unix 時間轉日期常見問題

如何把 Unix 時間轉換為日期?
辨識值是秒還是毫秒,再用時間戳轉換器或語言 API 轉換。在 JavaScript 中,把值傳給 new Date() 前先把秒乘以 1000。
Linux 時間和 Unix 時間一樣嗎?
對常規的時間戳轉換而言,是的。Linux 時間就是 Unix 時間:自 1970-01-01 00:00:00 UTC 起的秒。
為什麼我的 Unix 時間戳轉換成了 1970 年?
這通常意味著把秒的時間戳當作了毫秒。用 JavaScript Date 轉換前,把 10 位的秒值乘以 1000。
如何在 Excel 中把 Unix 時間轉換為日期?
Excel 沒有 Unix 紀元,所以把秒值除以 86400,再加上 1970 年的日期序號:=A1/86400 + DATE(1970,1,1),然後把儲存格格式設為日期。對毫秒則除以 86400000。