PHP Unix 時間戳程式碼片段
PHP 範例,用於取得 Unix 秒、產生毫秒、格式化時間戳、在 DateTime 物件之間轉換,以及解析日期字串。
Current Unix timestamp (seconds)
time()Current Unix timestamp (milliseconds)
round(microtime(true) * 1000)Formatted date from timestamp
date("Y-m-d H:i:s", 1700000000)Date in specific timezone
date_default_timezone_set("America/New_York");
date("Y-m-d H:i:s", 1700000000);
// Or with DateTime:
$dt = new DateTime();
$dt->setTimestamp(1700000000);
$dt->setTimezone(new DateTimeZone("America/New_York"));
echo $dt->format("Y-m-d H:i:s");Timestamp from date string
strtotime("2023-11-15 06:13:20 UTC")PHP 時間戳記基礎
PHP 的 time() 返回整數 Unix 秒。當你需要次秒精度,或想為面向 JavaScript 的 API 推導 Unix 毫秒時,使用 microtime(true)。
在 PHP 中格式化日期
date() 以伺服器預設時區格式化時間戳記,而 gmdate() 以 UTC 格式化。對於明確的時區處理,使用帶 DateTimeZone 的 DateTime,使部署行為一致。
PHP 生產注意事項
PHP 應用常執行在預設時區各異的共享主機、容器或背景 worker 上。把伺服器預設值當作實作細節。在持久化資料中儲存 Unix 秒或 UTC 的 DateTime 值,然後在為使用者、報表或整合格式化時間戳記的那一點選擇一個 DateTimeZone。
- 控制器、工作和簡單指令稿中的整數 Unix 秒用 time()
- 當你需要秒的小數或毫秒精度時用 microtime(true)
- 使用 gmdate() 進行忽略伺服器時區的穩定 UTC 格式化
- 對於不應意外修改日期的程式碼使用 DateTimeImmutable
FAQ
- time() 包含毫秒嗎?
- 不。time() 回傳整數 Unix 秒。如果你需要秒的小數部分,或需要計算毫秒時間戳記,請使用 microtime(true)。
- 為什麼用 gmdate() 而不是 date()?
- gmdate() 以 UTC 格式化時間戳記。date() 使用伺服器配置的時區,而它在本地開發、容器和生產託管之間可能會變化。
- 如何檢查 PHP 轉換?
- 用 gmdate('c', $timestamp) 轉換同一個值,然後在用於遷移之前,把它與獨立的紀元轉換器或資料庫 UTC 函式比較。