我創建了JavaScript時間戳和PHP時間戳。他們之間有大約170秒的差異。爲什麼JavaScript和PHP時間戳有差別
- 1302162686 PHP -
time()
- 1302162517 JavaScript的 -
Math.round(new Date().getTime()/1000)
爲什麼我有這個問題誰能告訴我?
我創建了JavaScript時間戳和PHP時間戳。他們之間有大約170秒的差異。爲什麼JavaScript和PHP時間戳有差別
time()
Math.round(new Date().getTime()/1000)
爲什麼我有這個問題誰能告訴我?
PHP在服務器端執行,在您的示例中,JavaScript在客戶端運行。
雙方都有自己的時間配置。對於服務器,時區設置等將保持不變(除非您更改它們),但服務器不知道當前訪問者所在的時區。您無法控制該時區。
如果我在筆記本電腦上更改我的系統時鐘,它將影響客戶端JavaScript日期/時間,但是您的服務器計時器不會受到影響。
我有8小時的差異! – nerkn 2011-04-07 07:57:54
對不起,我那時完全不在意。感謝您的幫助。 – 2011-04-09 06:31:12
PHP查看系統時間,即運行它的服務器。
JavaScript查看客戶端的系統,這可能是任何時間。
php在你的服務器上使用的時間,JavaScript將使用客戶端(用戶)機器上的時間。
Mathias是正確的。通常情況下,這種情況不應該發生這麼大的差別,因爲現代計算機認識到他們的時鐘隨時間而漂移,並且採用諸如NTP等協議來保持其時鐘同步。
但是你永遠不應該承擔的時間在客戶端和服務器是一樣的,原因有二:
比較/計算時間時,我只能依靠服務器。你無法控制客戶端。
很棒的回答。最後一段不能強調。 – 2011-04-07 08:02:50
PHP和JavaScript,都在看系統時間。誰的系統?他們正在運行的那個。服務器可能位於另一個國家,時間不同,因此有所不同。
此外,客戶端(或更少的服務器)時鐘可能不正確。
的一種方式,這是我經常用它來對付這個問題是這樣的:
var referenceTime = new Date('<?php echo date("M n, Y"); ?>');
// referenceTime is now the same as server time
如果您擔心不管出於什麼目的的一致性,我建議使用服務器作爲時間源,如果這樣做時區轉換必要:
做服務器和客戶端具有相同的時間設定? – 2011-04-07 07:57:59