更新本地存储中的时间

时间:2012-03-20 16:50:04

标签: php javascript sql

我正在尝试每分钟连接到服务器并传入当前时间的变量,这将是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.lastUpdate声明为new 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)

任何信息都会有所帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

使用时间时要小心。您的服务器时间可能与您的客户端时间不同。最适合您的是将最后一个请求的日期存储在$ _SESSION ['last']中。 有了这个解决方案,你的所有问题都不再存在了。你的PHP设置了日期,所以它是相同的引用,它的格式很好。

只需在客户端保持超时: - )

答案 1 :(得分:0)

使用new Date().getTime()返回UNIX时间戳;也就是说,自1970年1月1日以来的秒数。这使得与其他时间比较容易。

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

将返回如下内容:1332266002。

PHP等价物只是time()

要将UNIX时间映射转换为MySQL TIMESTAMP,请使用MySQL的FROM_UNIXTIME函数。