2012-03-20 106 views
0

我試圖每分鐘連接到服務器並傳入當前時間的變量,這將是lastUpdate。在服務器端的php文件中,我計劃將傳入的時間變量與數據庫行中的TIMESTAMP進行比較;就像if (time1-time2 > certain value)...到目前爲止,JavaScript代碼:在本地存儲中更新時間

var time; 
var timer_is_on = 0; 
localStorage.lastUpdate = 0; 
localStorage.numUpdates = 0; 

function timedCount() 
{ 
    localStorage.lastUpdate = new Date(); 
    //connect to server 
    contactServer(localStorage.lastUpdate); 
    currentCount=currentCount+1; 
    time=setTimeout("timedCount()",60000); 
} 

我的問題是我是否正確地這樣做。我宣佈localStorage.lastUpdatenew Date(),我不確定這是否正確?我試過這個循環,每分鐘lastUpdate似乎是相同的日期和時間。

我最後一個問題是我是否可以比較兩種時間格式從JavaScript和PHP。在SQL時間戳中,格式爲2012-03-20 11:14:40,而javascript new Date()的日期格式爲Tue Mar 20 2012 12:32:44 GMT-0400 (Eastern Daylight Time)

任何信息將會有所幫助,謝謝!

回答

0

使用new Date().getTime()返回UNIX時間戳;即自1970年1月1日以來的秒數。這使得與其他時間比較更容易。

localStorage.lastUpdate = new Date().getTime(); 

將返回這樣的事情:1332266002.

的PHP相當於簡直是time()

並將該UNIX時間表映射爲MySQL TIMESTAMP,使用MySQL的FROM_UNIXTIME函數。

2

使用時間時要小心。您的服務器時間可能與您的客戶端時間不同。最適合你的是將最後一次請求的日期存儲在$ _SESSION ['last']中。 使用此解決方案,您的所有問題都不再存在。你的PHP設置日期,所以它是相同的參考,並且格式良好。

只是在客戶端保持超時:-)

+0

我同意。您不應該指望將客戶端提供的時間與服務器上的時間進行比較。它們可能會有所不同,特別是當您考慮時區的影響時。一般來說,我發現使用設置爲UTC的UNIX時間戳傳遞時間/日期是最簡單的。它是任何平臺上可靠的最低公分母。 – pseudosavant 2012-03-20 17:32:20

+0

但是,仍然需要避免這種情況發生。人們不能依賴客戶端發送給服務器的內容。決不! – Alytrem 2012-03-21 08:29:31

相關問題