javascript显示与php不同的日期

Jar*_*red 2 javascript date

我有一个PHP脚本,从数据库值生成一个日期对象,如下所示:

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

这是我的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);
            }
        },
Run Code Online (Sandbox Code Playgroud)

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

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

注意:这仅适用于某些用户,我无法在本地重现.

有任何想法吗?贾里德

Joh*_*een 5

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

  • http://momentjs.com/timezone/和https://github.com/mde/timezone-js是两个积极维护的时区库.[既然你打我回答] (2认同)