我有一个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日
注意:这只发生在某些用户身上,我无法在本地重现。
有什么想法吗? 贾里德
答案 0 :(得分:5)
javascript正在使用本地机器时钟,而服务器正在吐出服务器时间。除非您的所有用户与服务器位于同一时区,否则您将遇到此问题。许多人使用的解决方案是将服务器时间规范化为UTC,然后在客户端javascript上进行适当的计算以考虑增量。