2

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

Ajax 网络聊天教程

除了时间显示不正确而且我不知道从哪里开始之外,我已经完成了所有工作。

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

第 2 步。然后它进入数据库并存储聊天线,其中列 'ts' 将 current_timestamp 存储为时间戳。

第 3 步。之后,Ajax 从数据库中抓取聊天行并刷新聊天以显示“真实”聊天行,即使代码应该将其转换为用户的时区,它也显示不正确。这是让您了解我所在位置的代码。

Grab Time from chat database: // 返回聊天创建的 GMT (UTC) 时间:

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

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

// 所有时间都显示在用户的时区 var d = new Date();

    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.setUTCHours = 1348834072033

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

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

4

1 回答 1

1

这里有,什么,三个不同的系统?Web 浏览器、数据库和 Web 服务器(运行 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

于 2012-09-28T15:27:24.067 回答