指南 / 程式碼

在程式碼中取得目前 Unix 時間戳

取得 Unix 秒或毫秒的 JavaScript、Python、Java、PHP、Go、SQL 與 Shell 範例。

JavaScript

const milliseconds = Date.now()
const seconds = Math.floor(milliseconds / 1000)

Python

import time
seconds = int(time.time())
milliseconds = time.time_ns() // 1_000_000

Java

long milliseconds = System.currentTimeMillis();
long seconds = java.time.Instant.now().getEpochSecond();

PHP、Go、SQL 與 Shell

PHP:   time()
Go:    time.Now().Unix()
PostgreSQL: floor(extract(epoch from now()))
Shell: date +%s

使用前核對單位

務必確認接收系統需要秒或毫秒。單位不符比裝置時鐘錯誤更常見,也可能造成一千倍偏差。若程式碼運行於分散式系統,還應確認主機時鐘同步、整數類型範圍與序列化格式。

先核對函式回傳單位

JavaScript 的 Date.now() 回傳毫秒。Python 的 time.time() 回傳含小數的秒,time.time_ns() 回傳整數奈秒。Java 的 Instant 拆分整秒與奈秒調整值。替毫秒補零只改變表示單位,不會提高真實測量精度。

建議用 1700000000 秒或 1700000000000 毫秒作固定測試案例,兩者應在時間戳轉換器得到 2023-11-14T22:13:20Z。固定案例比持續變化的現在值更容易發現千倍單位錯誤。

JavaScript 中區分日期與耗時

const milliseconds = Date.now()
const seconds = Math.floor(milliseconds / 1000)
const isoUtc = new Date(milliseconds).toISOString()

const started = performance.now()
// 在這裡執行需要測量的操作。
const elapsedMilliseconds = performance.now() - started

前三行表示日曆時刻,最後兩行以單調時鐘測量耗時,並非 Unix 時間戳。系統校時可能改變 Date.now(),所以短任務效能測量不應混用這兩種時鐘。

大整數如何跨系統傳遞?

接收 19 位奈秒資料時,不要先轉成 JavaScript Number。若接收端無法精確保存大整數,JSON 使用十進位字串,再由支援的環境轉成 BigInt。否則資料可能在進入工具前已丟失末尾數字。

SQL 應檢查資料庫引擎與工作階段時區,名稱相近的函式可能回傳不同型別或套用不同規則。把單位寫進欄位約定,匯入後用已知案例核對;交換格式可參考ISO 8601 與 Unix 時間。

標準與執行環境參考

工具 / 01—06

更多時間戳工具

每個工具都從明確的輸入開始,提供明確的結果。