【问题标题】:format moment JS date substracts one day格式化时刻 JS 日期减去一天
【发布时间】:2020-01-14 21:37:24
【问题描述】:
我目前正在使用 moment.js,但在将日期格式化为 DD MMM 时遇到了问题,因为它给我的时间比原来的日期少了一天。我正在使用下一行进行转换:
moment(date).format('DD MMM')
例如,日期是 2019-09-12T00:00:00Z,对于这个日期,时刻给我:11 sept
那么,为什么是 11 而不是 12?这与小时为 00:00:00Z 的事实有关吗?那样的话,应该怎么威胁呢?
提前致谢
【问题讨论】:
标签:
javascript
angular
date
momentjs
【解决方案1】:
是的,这几乎可以肯定,因为它正在格式化您当前时区的日期,但原始时间以 UTC 表示 - 末尾的 Z 表示“与 UTC 的零时区偏移”。作为参考,带有时区的日期,而不是Z,最后会出现-06:00。
我相信您可以使用 moment.utc 方法解决您的问题,该方法会导致打印该日期的内容以 UTC 而不是您当地的时区。
比较不带.utc 的打印日期(包括时区):(我的时区是UTC -6)
console.log(moment('2019-09-12T00:00:00Z').format('DD MMM Z'));
=> 11 Sep -06:00
与.utc 相比:
console.log(moment.utc('2019-09-12T00:00:00Z').format('DD MMM Z'));
=> 12 Sep +00:00