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 時間。