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

PHP 與 JavaScript 時間戳差異深度解析

     編輯:PHP 綜合知識

PHP 的 time() 與 JavaScript 的 Date.getTime() 雖同源於 Unix Epoch(1970-01-01 00:00:00 UTC),但在單位與時區處理上存在關鍵差異,若不加注意極易導致比對錯誤。

差異一:時間單位

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

轉換公式: JS 毫秒值 = PHP 秒值 × 1000

差異二:時區基準點

  • PHP:time() 回傳的是 UTC 時間戳(不受 date_default_timezone_set() 影響)。但開發者常誤以為設定時區後 time() 會改變,實際上只有 date()、strtotime() 等格式化函式受時區影響。
  • JavaScript:Date.getTime() 同樣回傳 UTC 毫秒數。但 new Date() 在無參數建構時,會依瀏覽器本地時區顯示,導致直觀上感覺「不一致」。

常見坑點與對策

錯誤示範

// PHP 端
$phpTime = time(); // 1704067200

// JS 端
var jsTime = Date.now(); // 1704067200000

// 直接比較 → 永遠不相等
if ($phpTime == $jsTime) { ... } // 錯誤

正確做法

// 統一轉為秒比較
if ($phpTime == floor($jsTime / 1000)) { ... }

// 或統一轉為毫秒比較
if (($phpTime * 1000) == $jsTime) { ... }

除錯建議

當時間比對出現預期外結果時,不要只比對時間戳數值。請分別輸出「年、月、日、時、分、秒」各欄位逐一比對:

// PHP
echo date('Y-m-d H:i:s', $phpTime);

// JavaScript
console.log(new Date(jsTime).toISOString()); // UTC 標準格式
console.log(new Date(jsTime).toString());    // 本地時區格式

透過具體日期時間元件對比,能快速定位是單位換算錯、時區誤解、或是夏令時間導致的偏移。

總結

  • 時間戳本質相同:皆為 Unix Epoch 起算。
  • 單位不同:PHP 秒、JS 毫秒 → 需 ×1000 或 ÷1000。
  • 時區陷阱:time()/getTime() 皆為 UTC;格式化輸出才受時區影響。
  • 跨語言傳遞時間建議:使用 ISO 8601 字串(如 2024-01-01T00:00:00Z),避免單位與時區歧義。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved