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。
More posts
什麼是 UTC 時間?含義、偏移與轉換詳解紀元時間戳詳解:Unix 時間、POSIX 時間與自 1970 年起的秒epoch 轉換器指南:轉換紀元時間、Unix 時間和時間戳日期轉 epoch:把時間轉換為 Unix 時間戳或紀元時間epoch 毫秒轉日期:轉換 13 位時間戳和 long 值當前 Unix 時間戳:紀元時鐘、UTC 時間與即時 Unix 時間2026 年初的 Unix 時間戳:1767225600 詳解JavaScript Date.now():取得與轉換 Unix 時間戳毫秒 vs 秒:讓每個應用都崩潰的單位混淆在資料庫中儲存時間戳:DATETIME vs INT vs BIGINT無需函式庫的 JavaScript 時區正確日期格式化每個開發者都發布過的 7 個 Unix 時間戳 bug紀元時間詳解:Unix 時間戳零是什麼?