2009-02-04 33 views
1

是時候了嗎? 是時間()。substr(microtime(),2,2)? 是時間()。substr(microtime(),2,3)?如何向PHP中的javascript方法Date.setTime()提供值?

用下面的代碼段丟失了一種。

function updateClock () { 
    var timeStamp = <?php echo time().substr(microtime(), 2, 2);?>; 
    var currentTime = new Date (); 
    currentTime.setTime(timeStamp); 

    ... 
    ... 
} 

我的目標是使用服務器時間並從那裏開始在客戶端瀏覽器窗口上打勾。上面的代碼要麼返回當前的客戶端計算機時間,要麼在1973年某個時候返回。我想我沒有爲setTime()獲取正確的時間戳格式?

謝謝!

我試過了,但網頁仍然顯示我我上傳js.php(呈現javascript代碼)到我的服務器後,本地時間。我的服務器與我的時間差不多12小時。我的猜測是,php是否將客戶端時間考慮在運行時間()中?我的意思是瀏覽器發送請求時間給Apache的權利?

我複製的時間()* 1000從我的服務器上的網頁運行返回值,它粘貼到本地的頁:

<script type="text/javascript"> 

var d = new Date(); 
d.setTime(1233760568000); 
document.write(d); 

</script> 

而且這的確是我的本地時間。因此猜測。

反正是有指定的時區時間()?

+0

php無法讀取客戶端時間。另外,請檢查你的服務器和客戶端是否在同一個時區。您可以使用php函數gmdate()獲取與時區無關的時間。如果您還有其他問題,請將其張貼在新條目中,以便人們看到。這不是討論板。 – phihag 2009-02-05 00:13:32

回答

2

Date.setTime預計自1970-1-1以來的毫秒的數量。自從1970-1-1以來,php的time function產生的數量。因此,你可以用

var TimeStamp = <?php echo time()*1000;?> 

由於延遲問題(瀏覽器需要開始之前的JavaScript加載整個頁面),時間通常會漂移的一個或幾秒鐘雖然。

1

乘以1000. JavaScript期望毫秒,而PHP返回秒。

0

Date.setTime()要自Unix紀元毫秒,時間(),因爲然後返回秒。如果不需要絕對精確度(並給予你的方法,我不認爲這是),只是你乘以通過1000

編輯從時間()獲得的價值:打兩次 - D'oh