我当前正在使用moment.js,并且遇到将日期格式化为 DD MMM 的问题,因为它给了我比原始日期少一天的时间。我在下一行进行转换:
moment(date).format('DD MMM')
例如,日期为 2019-09-12T00:00:00Z ,对于这个日期,时刻在给我: 9月11日
然后,为什么选择11而不是12?这与小时为00:00:00Z的事实有关吗?在那种情况下,应该如何受到威胁?
预先感谢
答案 0 :(得分: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