2012-03-20 66 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

相关问题