簡體   English   中英

為什么JavaScript和PHP時間戳之間存在差異

[英]Why is there a difference between JavaScript and PHP timestamp

我創建了一個JavaScript時間戳和一個PHP時間戳。 它們之間有大約170秒的差異。

  • 1302162686 PHP - time()
  • 1302162517 JavaScript - Math.round(new Date().getTime() / 1000)

誰能告訴我為什么我有這個問題?

PHP在服務器端執行,在您的示例中,JavaScript在客戶端工作。

雙方都有自己的時間配置。 對於服務器,時區設置等將保持不變(除非您更改它們),但服務器不知道當前訪問者所在的時區。您無法控制它。

如果我在筆記本電腦上更改系統時鍾,它將影響客戶端JavaScript日期/時間,但您的服務器計時器不會受到影響。

PHP和JavaScript,都看系統時間。 誰的系統? 他們正在運行的那個。 服務器可能位於另一個國家,時間不同,因此存在差異。

此外,客戶端(或不常用的服務器)時鍾可能不正確。

我常用來解決這個問題的一種方法是這樣的:

var referenceTime = new Date('<?php echo date("M n, Y"); ?>');
// referenceTime is now the same as server time

PHP查看系統時間,即運行它的服務器。

JavaScript查看客戶端的系統,這可能是任何時候。

php使用你服務器上的時間,javascript將使用客戶端(用戶)機器上的時間。

馬蒂亞斯是對的。 通常情況下,這不應該發生這么大的差異,因為現代計算機會識別它們的時鍾隨時間漂移並采用NTP等協議來保持其時鍾同步。

然而,你永遠不應該假設客戶端和服務器上的時間是相同的,原因有兩個:

  • 某些客戶端/服務器沒有時鍾調整(例如NTP),並且它們的時鍾會隨着時間的推移而逐漸消失
  • 更重要的是,許多用戶/管理員在設置時區或調整夏令時方面可能是無能為力或遲到的,所以給你的時間可能精確到一秒,但可能需要幾個小時。

比較/計算時間時,我只依賴服務器。 您無法控制客戶端。

如果您擔心出於任何目的的一致性,我建議您使用服務器作為時間源,並在必要時進行時區轉換:

這可能是有意義的: 使用php處理時區轉換

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM