我已经设置了一个 JSON 端点,它从服务器返回当前时间。例如:
{
"myservertime": "2011-10-02T23:00+02:00"
}
现在是 CET 夏季时间。
现在,我还有一个 jQuery 代码可以很好地解析它。
$.sysTime = function(success) {
$.ajax({
url: '/jsontimepath/',
dataType: 'json',
async: false,
success: function(json){
sysDateTime = new Date(Date.parse(json.myservertime));
console.log('The system time now is: ' + sysDateTime)
}
});
return sysDateTime;
};
问题是,当我检查控制台时,它仍然显示错误的时间...它仍然受到我的计算机时区的影响...例如,对于香港的用户,上面引用的时间将导致:
2011 年 10 月 3 日星期一 05:00:00 GMT+0800 (HKT)
我确实给了它一个有效的 ISO8601 时间字符串,它只是调整它。返回的实际时间是正确的(在那个时区)...但是为什么它会这样调整???我希望它返回 CET 时间而不是当地时间......
一切都很好,试试这个:
new Date(Date.parse("2011-10-02T23:00+02:00")).getUTCHours() //21
日期解析正确(按预期考虑时区)。但是,当您只是打印时Date.toString()
它显示当前浏览器时区的日期(Java 的罪过之一Date
对象无耻地复制到 JavaScript...)
如果你坚持getUTC*()
通过一系列方法,您将获得正确的值(如上面的示例所示)。普通的get*()
方法始终受到浏览器时区的影响(而不是您解析日期的时区,该时区会丢失),因此通常无用。
另一个例子:2011-10-03 02:00+03:00实际上是 10 月 2 日 23:00。但是当你解析它时(我当前的浏览器时区是+0200(CEST)):
new Date(Date.parse("2011-10-03T02:00+03:00")) //Oct 03 01:00:00 GMT+0200
然而,UTC 月份当前日期是:
new Date(Date.parse("2011-10-03T02:00+03:00")).getUTCDate() //2 (2nd of Oct)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)