Unix 時間戳 ↔ 日期轉換
Unix 時間戳係「1970-01-01 00:00:00 UTC 至而家經過嘅秒數」,幾乎所有電腦系統、API、log file 都用呢個格式儲時間。輸入時間戳即時得出 UTC(ISO 8601)、香港時間(HKT, UTC+8)、毫秒、HTTP 日期同瀏覽器本地時間;亦可以 datetime picker 反向計時間戳。
請輸入有效嘅 Unix 時間戳(JavaScript 可表示範圍:±100,000,000 日)。
UTC(ISO 8601)
2023-11-14T22:13:20.000Z
Tue
香港時間(HKT)
2023-11-15T06:13:20.000+08:00
Wed
毫秒
1700000000000
—
HTTP 日期(RFC 1123)
Tue, 14 Nov 2023 22:13:20 GMT
HTTP / RFC 1123
瀏覽器本地時間
—
採用呢部裝置嘅 timezone 同 locale 設定;伺服器、API、log 通常用上面嘅 UTC。
公式
milliseconds = seconds × 1000 UTC = new Date(milliseconds) HKT 牆鐘 = UTC + 8 小時(年中無夏令時間調整)
- · Unix 時間戳(亦叫 POSIX time / epoch time)唔包含閏秒(leap seconds),由 1972 年起累積 27 秒嘅差。普通系統時鐘係假設「每日剛好 86,400 秒」。
- · JavaScript Date 可表示嘅時間範圍係 1970 ±100,000,000 日(約 ±271,821 年),轉做秒大約 ±8.64 × 10¹² 秒;超出會回傳 null。
- · 秒(10 位)vs 毫秒(13 位)係最常見嘅混淆。一般以位數判斷:1,700,000,000 屬秒、1,700,000,000,000 屬毫秒;用「單位」下拉揀啱嘅單位。
- · 香港時間(HKT)自 1979 年起係固定 UTC+8,全年都唔行夏令時間,所以呢度直接用「+8 小時」做換算。
- · HTTP RFC 1123 日期(例:Tue, 14 Nov 2023 22:13:20 GMT)係 Cookie、Last-Modified、Date header 嘅標準格式。
- · 時間戳轉換邊界值:0 = 1970-01-01T00:00:00Z;2,147,483,647 = 2038-01-19T03:14:07Z(32 位 signed int 上限,即「Y2K38 問題」)。
常見問題
我有個 13 位嘅數字,似時間戳又似毫秒,點分?
幾乎一定係毫秒。Unix 秒由 2001-09-09 起一直都係 10 位(10 億),而 2038 年之前都唔會升到 11 位。任何 13 位嘅數字(≥ 1×10¹²)代表毫秒,揀「毫秒(ms)」單位即可。如果係 10 位(例:1700000000),就揀「秒(s)」。19 位或以上通常係 nanoseconds,要先除以 1,000,000 變回 ms 先計到。
為咩 UTC 同 HKT 顯示嘅日期可以唔同一日?
因為 HKT = UTC + 8 小時。如果 UTC 嘅時間係下午 4 點之後(即 16:00–23:59),加 8 個鐘就會跨過午夜,HKT 嗰邊已經係第二日。例如 2023-11-14 22:13:20 UTC = 2023-11-15 06:13:20 HKT。Debug API 同 log 常見就係呢種「整咗一日嘅差」假象,特別係東 8 區用戶睇美國伺服器嘅 log。
可以代到 1970 年之前嘅日期嗎?
可以 — 1970 之前嘅時間用負時間戳表示。例如 -1 = 1969-12-31 23:59:59 UTC、-86400 = 1969-12-31 00:00:00 UTC。JavaScript Date 嘅整體有效範圍係 1970 ±100,000,000 日(即 ±271,821 年左右),呢個工具會檢查邊界,超出範圍會出錯誤提示。負值嘅毫秒同正值一樣可以接受。
咩係 2038 年問題?呢個轉換器會中招嗎?
2038-01-19 03:14:07 UTC 對應嘅 Unix 秒 = 2,147,483,647 = 2³¹ − 1,正好係 32-bit signed integer 嘅上限。如果系統用 32-bit int 儲時間戳,過咗呢一刻就會 overflow 變成 1901 年負值。呢個工具用 JavaScript Number(53-bit safe integer),所以唔受 32-bit 限制,可以正常處理至 2286 年(10 位升 11 位)甚至再之後。如果你嘅後端用 C 嘅 time_t 或者舊嘅 MySQL TIMESTAMP,就要留意呢個遷移問題。
同類工具
年齡計算機
由出生日期計算實歲、虛歲、總日數同距下次生日仲有幾耐。
日期相差計算機
輸入兩個日期,即時計到相差日數、工作天、週末、年月日同總週數/月數。
時區換算
揀本地同對方城市,即時換算指定時間嘅時區差。
日期加減計算機
由一個日期出發,加或減指定嘅年、月、星期、日,即時得到新日期同星期幾。
工作天計算機
計算兩個日期之間嘅工作天數,自動撇除星期六、日。亦支援由起點加 N 個工作天求結束日。
預產期計算機
由最後一次月經日期(LMP)用 Naegele 法則推算預產期,列出現時孕周、孕期同三個三月期分界。
工時計算機(上班/放工/午飯)
輸入上班同放工時間、午飯/休息分鐘數,即時計到當日工作幾多個鐘同薪金;自動處理通宵更(過夜)。
一年第幾日/第幾週計算機
揀一個日期,即時知道係該年第幾日(1–366)、ISO 8601 第幾週、星期幾、距離年初/年尾幾多日。
查日子係星期幾計算機(任何日期)
輸入任何公曆日期(包括過去同未來),即時查出嗰日係星期幾 — 適合查生日、結婚紀念日、歷史事件嘅星期。
復活節日期計算機
輸入年份,用 Computus 演算法計復活節主日,連帶聖灰禮儀日、棕枝主日同耶穌受難日。
月相計算機
輸入任何日期,立即計到當日月相(新月/上弦/滿月/下弦等)、月齡同照明百分比。
生肖同虛歲計算機
輸入出生日期,計算十二生肖、五行天干地支、本命年同虛歲。
西方星座計算機
輸入出生月日,即時知道你嘅西方星座(白羊、金牛、雙子…)、四元素、性質同對宮星座。
生日石(誕生石)對照表
揀出生月份,即時知道對應嘅現代誕生石、傳統誕生石、誕生花,配埋星座範圍同色卡,方便揀首飾或生日禮物。
儒略日 (Julian Day) 計算機
將公曆日期換算成儒略日 (JDN) 或修改儒略日 (MJD),常用於天文觀測、史學同跨曆法日期運算。
ISO 8601 週次計算機
輸入任何日期,按 ISO 8601 標準(週一為首日、首週含 1 月 4 日)計到 ISO 年份、週次(W01–W53)同星期幾。
時間相差計算機(時分秒)
輸入兩個時間(HH:MM[:SS]),即時計到相差幾多個鐘、分鐘同秒,支援跨夜班同小數時數。
香港法定年假計算機
輸入受僱年資,根據《僱傭條例》第 41AA 條即時計到法定有薪年假日數。
半歲生日 (Half-Birthday) 計算機
輸入出生日期,計到下一個半歲生日係邊日、距今幾多日,同埋你嘅半歲年齡(例如 33.5 歲)。
日照時間 (Sunrise/Sunset) 計算機
輸入緯度、經度同日期,用 NOAA 太陽公式計到當地嘅日出、日落、太陽中天同總日照時間。