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

PHP和Javascript聊天室sql数据库中的时间戳关闭,php,javascript,sql,timezone,chatroom,Php,Javascript,Sql,Timezone,Chatroom,基本上,我一直在尝试按照教程创建聊天室 我已经全部完成了,只是时间显示不正确,我不知道从哪里开始 第一步。聊天室立即显示用户的行(使用javascript的Date()正确显示,因此用户认为系统速度快) 第二步。然后它进入数据库并存储聊天线,其中列“ts”将当前的时间戳存储为时间戳 第三步。在这之后,Ajax从数据库中获取聊天记录并刷新聊天记录以显示“真实”的聊天记录,尽管代码应该将其转换为用户的时区,但显示不正确。这是代码,让你知道我在哪里 从聊天数据库抓取时间: //返回聊天室创建的GMT

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

我已经全部完成了,只是时间显示不正确,我不知道从哪里开始

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

第二步。然后它进入数据库并存储聊天线,其中列“ts”将当前的时间戳存储为时间戳

第三步。在这之后,Ajax从数据库中获取聊天记录并刷新聊天记录以显示“真实”的聊天记录,尽管代码应该将其转换为用户的时区,但显示不正确。这是代码,让你知道我在哪里

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

        $chat->time = array( 
            'hours'     => gmdate('h',strtotime($chat->ts)),
            'minutes'   => gmdate('i',strtotime($chat->ts))
        );
然后将其发送到javascript以更新聊天室的聊天线路

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

if(参数时间){
//PHP以UTC(GMT)为单位返回时间。我们使用它来输入日期
//对象,然后将其输出到用户的timezone.JavaScript中
//在内部为我们转换它。
d、 设定值(参数时间小时,参数时间分钟);
}
params.time=(d.getHours()<10?'0':'')+d.getHours()+:'+
(d.getMinutes()<10?'0':'')+d.getMinutes();
示例:用户提交聊天热线

Javascript打印11:07

SQL将当前时间戳保存为8:07

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

d、 setUTCHours=1348834072033

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


我想我没有遗漏任何东西。有人能帮忙吗?几天来,我真的很想弄明白这件事。Javascript很好。。。我认为SQL正在做它应该做的事情,并将其转换为通用时间或GMTP和PHP很接近。。休息一个小时,但是javascript没有完成它应该做的事情:(

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

它们是否同步?配置是否正确?这是您应该开始的地方


太好了……好吧,现在我没有向服务器发送日期。它只是在mysql中使用“current_timestamp”。我认为这是最有效的方式。我真的不喜欢从javascript到php的对话。有没有php函数可以代替date.UTC?我想说它们是同步的,但我真的不知道。我怎么能检查呢?我告诉我们ing date\u default\u timezone\u get我看到的是America/Toronto。除此之外,我不知道还有什么地方可以继续。我没有权限更改mysql时区,也不知道如何显示Ntpd。要在*nix框中获取系统时间,请使用“date”命令。这可能对您有一些用处:最后,无论您如何让web服务器和数据库在时间上达成一致,您仍然存在混合客户端和服务器时间戳的问题-您在应用程序中向用户显示本地系统时间,然后让DB服务器在数据写入DB时给数据加上时间戳。我建议您使用UTC ev在任何情况下,不要向用户显示本地生成的时间戳,只要在服务器发送时间戳后将其转换为客户端时间戳即可。如果服务器时间正确,则显示的时间戳中的任何异常都将是客户端的错误,超出您的控制范围。
    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();