2012-12-14 12 views
0

遇到JavaScript日期怪异,我不能包裹我的头。转换为时间字符串的JSON日期

我通过WebAPI返回日期/时间:'2012-12-13T12:17:06.080'。它在当地时间(-7 UTC)。

当通过JavaScript运行此日期

var d = new Date('2012-12-14T05:32:05.543'); 
alert(d.toTimeString()); 

回报22时32分05秒MST

然后做

var d = new Date('2012-12-14T05:32:05.543'); 
alert(d.toLocaleTimeString()); 

回报下午10时32分05秒

toTimeString/toLocaleTimeString()每个JavaScript文档说它应该只提取时间部分,为什么时间会改变?我应该怎么做才能让它返回正确的时间部分05:32:05而不会创建一个所谓的不需要的功能?

+0

Is'nt明摆着的吗?新日期应该如何知道你已经减去了7个小时以获得当地时间。它没有,所以它把所有的时间都一样对待,并将它们转换为当地时间,再延长七个小时,给你错误的时间。 – adeneo

+0

是的,这是非常明显的,但@Pointy提出的观点(ahem),有假设涉及。 –

回答

1

当你给Date()构造函数一个ISO8601时间戳字符串时,它总是将它解释为UTC。

并非所有浏览器的行为方式都是相同的,有些则完全不喜欢。

+0

感谢您的解释! –

相关问题