为什么矩时区不适给定时区
我的那一刻,时区网站上的Chrome开发者工具检查一下:https://momentjs.com/timezone/为什么矩时区不适给定时区
我执行:
moment(new Date(2011, 9, 16, 12)).tz('America/Los_Angeles').toDate()
,结果仍然是:
太阳2011年10月16日12:00:00 GMT + 0200(欧洲中部夏令时间)
为什么时间时区不适用给定的时区,我得到Central European Daylight Time
?
当您创建new Date(2011, 9, 16, 12)
,它得到10月16日在12:00在任何浏览器的时区是。然后tz
将其转换为指定的时区,并且toDate()
将转换回日期对象(使用浏览器的时区)。
如果你想创建10月16日在12:00在洛杉矶时区,有没有必要使用new Date
。您可以直接使用moment.tz
:
moment.tz('2011-10-16 12:00', 'America/Los_Angeles')
输出将是:
太阳2011年10月16日12:00:00 GMT-0700
您还可以创建日期值传递而不是字符串(check the docs看到所有选项):
moment.tz([2011, 9, 16, 12], 'America/Los_Angeles')
moment.tz({ year: 2011, month: 9, day: 16, hour: 12 }, 'America/Los_Angeles')
以上所有产生的日期相同(10月16日th 2011 at 12:00 in洛杉矶时区)。
请注意,这些值为零索引(1月为零),而在字符串中,月份为单索引(1月为1
)。
调用上述toDate()
将日期/时间转换到浏览器的默认时区也是如此。
请记住,这会创建一个“时刻”对象。从那里,还应该使用'format'这样的函数来获得所需的输出。 –
@MattJohnson确实!但由于OP没有具体说明他们希望使用特定格式的日期,所以我没有在问题中加入这个日期。但感谢提醒! – 2017-08-29 18:35:48
只是一个想法......你使用的是moment.js,所以你不需要处理'日期'古怪。如果你用“新日期(2011,9,16,12)”喂食它,那么你就打败了总体目标。 –
您是否将时区列表添加到moment.tz对象? –
@AnkitSolanki我没有,他们做的,我不是https://momentjs.com/timezone/ – Yoda