我在时刻时区网站上的Chrome开发者工具中查看了一下:https://momentjs.com/timezone/
我执行:
moment(new Date(2011, 9, 16, 12)).tz('America/Los_Angeles').toDate()
结果仍然是:
Sun Oct 16 2011 12:00:00 GMT + 0200(欧洲中部夏令时)
为什么片刻时区不适用于给定的时区,我得到Central European Daylight Time
?
答案 0 :(得分:0)
当你创建new Date(2011, 9, 16, 12)
时,无论浏览器的时区是什么,它都会在2011年10月16日 th 12点获得。然后tz
将此转换为指定的时区,toDate()
转换回日期对象(使用浏览器的时区)。
如果您想在洛杉矶时区创建 2011年10月16日 th 2011年,则无需使用new Date
。您可以直接使用moment.tz
:
moment.tz('2011-10-16 12:00', 'America/Los_Angeles')
输出将是:
Sun Oct 16 2011 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年12月在洛杉矶时区)。
请注意,这些值为零索引(1月为零),而在字符串中,月份为1索引(1月为1
)。
在上面调用toDate()
也会将日期/时间转换为浏览器的默认时区。