PHP和Javascript聊天室的sql数据库中的时间戳关闭



基本上,我一直在尝试按照教程创建聊天室。

Ajax Web聊天教程

我已经完成了所有的工作,只是时间显示不正确,我不知道从哪里开始。

步骤1。聊天立即显示用户的行(使用javascript的Date()正确显示,因此用户认为系统快速)

步骤2。然后它转到数据库并存储聊天行,其中列"ts"存储current_timestamp作为时间戳。

步骤3。之后,Ajax从数据库中获取聊天线路并刷新聊天以显示"真实"聊天线路,即使代码应该将其转换为用户的时区,它也会错误地显示。这是让你知道我在哪里的代码。

从聊天数据库获取时间://返回聊天创建的GMT(UTC)时间:

$chat->time = array( 
'hours'     => gmdate('h',strtotime($chat->ts)),
'minutes'   => gmdate('i',strtotime($chat->ts))
);

然后将其发送到javascript以更新聊天室的聊天线路

//所有时间都显示在用户的时区中var d=新日期();

if(params.time) {
// PHP returns the time in UTC (GMT). We use it to feed the date
// object and later output it in the user's timezone. JavaScript
// internally converts it for us.
d.setUTCHours(params.time.hours,params.time.minutes);
}
params.time = (d.getHours() < 10 ? '0' : '' ) + d.getHours()+':'+
(d.getMinutes() < 10 ? '0':'') + d.getMinutes();

示例:用户提交聊天线路。。

Javascript打印11:07…

SQL将current_timestamp保存为8:07。。。

PHP从数据库中抓取并将其转换为12:07

d.setUTCH小时=1348834072033

最后使用javascript将params.time打印到8:07

我想我没有错过任何其他东西。有人能帮忙吗?几天来想弄清楚这件事真的很糟糕。Javascript很好。。。我认为SQL正在做它应该做的事情,并将其转换为通用时间或GMT?:P和PHP很接近。。休息一个小时,但javascript没有做它应该做的事情:(

这里有三个不同的系统?网络浏览器、数据库和网络服务器(运行PHP),对吧?

它们同步了吗?它们的配置是否正确?这是你应该开始的地方。

http://en.wikipedia.org/wiki/Ntpd

https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html

http://php.net/manual/en/datetime.configuration.php

最新更新