2

我有一个 php 脚本,它从这样的数据库值生成日期对象:

$dt = new DateTime($string_from_database);   // In YYYY-mm-dd format
$jsonValue = $dt->format('U');

这是由我的 JS 使用 AJAX 检索的。我将它输入到这样的 jQuery 表中:

            //DateStart
        {
            'sName': 'date_start',
            'iDataSort': 2,
            'bSearchable': false,
            'fnRender': function(obj) {
                var dStart = new Date(parseInt(obj.aData['DateStartJson']) * 1000);
                var dEnd = new Date(parseInt(obj.aData['DateEndJson']) * 1000);
                if (obj.aData['DateStartJson'] == obj.aData['DateEndJson'])
                    return dStart.toDateString().substr(4);
                else
                    return dStart.toDateString().substr(4) + ' -<br/>' + dEnd.toDateString().substr(4);
            }
        },

一些用户报告显示的 JS 时间比直接通过 PHP 显示的日期早一天。

PHP 显示:2013 年 8 月 24 日 JS 显示:2013 年 8 月 23 日

注意:这只发生在某些用户身上,我无法在本地重现它。

有任何想法吗?贾里德

4

1 回答 1

5

javascript 使用本地机器时钟,而服务器正在吐出服务器时间。除非您的所有用户都与服务器处于同一时区,否则您将遇到此问题。许多人使用的解决方案是将服务器时间标准化为 UTC 之类的时间,然后在客户端 javascript 上进行适当的计算以考虑增量。

于 2013-08-07T23:24:08.520 回答