javascript显示与php不同的日期

时间:2013-08-07 23:21:41

标签: javascript date

我有一个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日

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

有什么想法吗? 贾里德

1 个答案:

答案 0 :(得分:5)

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