首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 時間戳與 JavaScript 時間戳差異比較指南

     編輯:PHP 相關知識

核心結論

PHP 與 JavaScript 時間戳本質相同(均為 Unix Epoch 起算),但**單位與時區處理不同**,直接比較會導致錯誤。

兩大關鍵差異

1. 單位差異

語言函式單位範例值
PHPtime()秒1703000000
JavaScriptDate.now() / getTime()毫秒1703000000000

換算:1 秒 = 1000 毫秒。比較前必須統一單位(PHP ×1000 或 JS ÷1000)。

2. 時區差異

  • PHP:time() 受 date_default_timezone_set() 影響。設定為東八區(中國)後,起算點變為 1970-01-01 08:00:00
  • JavaScript:通常不做時區設定,起算點固定為 1970-01-01 00:00:00 UTC

這導致相同瞬間取得的時間戳數值不同(相差 8 × 3600 秒)。

最佳除錯策略

當比較結果不符預期時,**不要猜**,直接輸出完整日期元素逐一比對:

// PHP
echo date('Y-m-d H:i:s', $timestamp);
// JavaScript
console.log(new Date(timestamp).toISOString());
// 或拆解
const d = new Date(timestamp);
console.log(d.getFullYear(), d.getMonth()+1, d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds());

逐一比對年、月、日、時、分、秒,立刻定位問題根源。

實務建議

  1. 前後端傳遞時間統一使用 **ISO 8601 字串**(如 2023-12-20T10:30:00+08:00),避免時間戳陷阱
  2. 資料庫儲存使用 DATETIME 或 TIMESTAMP 型別,而非整數時間戳
  3. PHP 端統一設定 date_default_timezone_set('Asia/Shanghai')
  4. JS 端使用 toLocaleString() 或 Intl.DateTimeFormat 格式化顯示
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved