了解 Unix 時間戳記:開發者完整教學

2026-05-20 · Development

什麼是 Unix 時間戳記?

Unix 時間戳記是一種將時間追蹤為累計秒數的方式。它計算從1970 年 1 月 1 日 00:00:00 UTC以來經過的秒數——這個參考點被稱為「Unix 紀元」。

例如,Unix 時間戳記 1719000000 代表一個特定的時間點:2024 年 6 月 22 日約 00:00 UTC。每一秒,這個數字就會增加一。

為什麼要使用 Unix 時間戳記?

Unix 時間戳記在軟體開發中無處不在,原因如下:

  • 獨立於時區:一個時間戳記在全世界各地的意義都相同。沒有關於它是 EST、PST 還是 JST 的歧義——它永遠基於 UTC。
  • 易於比較:比較兩個時間戳記只是簡單的數字比較。如果時間戳記 A 大於時間戳記 B,事件 A 發生在事件 B 之後。
  • 高效儲存:儲存一個 10 位數的整數比儲存格式化的日期字串如「2024-06-22T00:00:00Z」更節省空間。
  • 數學運算:給時間戳記加上 86,400 秒就剛好是 24 小時後。不需要擔心月份邊界或閏年。

秒與毫秒

Unix 時間戳記有兩種常見格式:

  • 秒(10 位數):原本的 Unix 時間戳記格式。例如:1719000000
  • 毫秒(13 位數):JavaScript 和許多現代 API 使用此格式以獲得更高精度。例如:1719000000000

這兩種格式混用是常見的錯誤來源。如果你把毫秒時間戳記傳給預期接收秒的函式,日期會完全不對(大約是 50,000 年後)。

在不同語言中使用時間戳記

JavaScript

const now = Date.now(); // 毫秒
const seconds = Math.floor(Date.now() / 1000);
const date = new Date(seconds * 1000);

Python

import time
seconds = int(time.time())
from datetime import datetime
dt = datetime.fromtimestamp(seconds)

PHP

$timestamp = time(); // 秒
$date = date('Y-m-d H:i:s', $timestamp);

MySQL

SELECT UNIX_TIMESTAMP(); -- 目前時間戳記
SELECT FROM_UNIXTIME(1719000000); -- 轉換為日期

常見陷阱

  • 2038 年問題:32 位元有號整數將在 2038 年 1 月 19 日溢位。使用 32 位元時間戳記的系統需要遷移到 64 位元整數。
  • 閏秒:Unix 時間戳記不考慮閏秒。大多數系統直接忽略它們,這可能與原子時間有些微差異。
  • 時區顯示:永遠記住 Unix 時間戳記是 UTC。顯示給使用者時需要轉換為他們的本地時區。

TryQuickToolBox 時間戳記轉換器

我們的免費工具可在 Unix 時間戳記(秒和毫秒)、ISO 8601 日期、UTC 時間和本地時間之間轉換。自動偵測意味著你可以貼上任何格式並立即獲得結果。點擊任何結果即可複製到剪貼簿。

立即轉換時間戳記 →