0

遇到一个我无法理解的 JavaScript 日期异常。

我有一个通过 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返回

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

4

2 回答 2

1

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

并非所有浏览器的行为方式都相同,有些浏览器根本不喜欢这些。

于 2012-12-14T17:34:00.213 回答
1

这是解决您的问题的方法:

获取日期的部分并手动构造日期对象。

我附上了一个展示http://jsbin.com/iduzaz/3/watch的 JSBin

于 2012-12-14T18:22:54.043 回答