【发布时间】:2016-05-02 22:52:55
【问题描述】:
我的一些用户报告了不同的输出,偏移了一天。
代码:
var call=[1451084400000,1451170800000,1451257200000,1451343600000,1451430000000,1451516400000,1451602800000,1451689200000,1451775600000]
var arrayLength = call.length;
for (var i = 0; i < arrayLength; i++) {
document.getElementById('output').innerHTML += moment(call[i],"x").format("YYYY-MM-DD")+"<br>"
}
预期结果:
2015-12-26
2015-12-27
2015-12-28
2015-12-29
2015-12-30
2015-12-31
2016-01-01
2016-01-02
2016-01-03
问题:
2015-12-25
2015-12-26
2015-12-27
2015-12-28
2015-12-29
2015-12-30
2015-12-31
2016-01-01
2016-01-02
有什么想法吗?
【问题讨论】:
-
很可能与时区偏移有关。如果您可以记录实际的毫秒计数,您很可能会看到这些值是相同的,您只是根据时区达到了日期边界。
-
不是完全相同的副本(它不使用 moment.js),但它是同一个问题:Why is new Date() removing a day?。
-
另见stackoverflow.com/questions/36165182/…。这是一个特定时刻的问题/答案。基本上,你想要 moment.utc()
-
@MaggiePint 现在好了,当我使用 parseZone 时,我遇到了与用户看到的相同的问题。但是...正确的日期没有 parseZone :)
-
你看到的是正确的日期,你假设的日期是错误的。
1451084400000的时间值是 2015-12-25T23:00:00.000Z,即 GMT。将时区更改为东部 1 小时或更长时间,并且日期会更改。
标签: javascript datetime momentjs