我在"时机"网站上查看Chrome开发人员工具:https://momentjs.com/timezone/
我执行:
moment(new Date(2011, 9, 16, 12)).tz('America/Los_Angeles').toDate()
结果仍然是:
星期日10月16日2011年10:00:00 GMT 0200(中欧日光时间)
为什么Momment timezone不使用给定时区,而我得到Central European Daylight Time
?
创建new Date(2011, 9, 16, 12)
时,它将获得 10月16日 th 2011 at 12:00 在浏览器的时区域中。然后tz
将其转换为指定的时区,toDate()
将其转换回日期对象(使用浏览器的时区)。
如果您想创建 10月16日 th 2011 at 12:00 在洛杉矶时区,无需使用new Date
。您可以直接使用moment.tz
:
moment.tz('2011-10-16 12:00', 'America/Los_Angeles')
输出将是:
太阳2011年10月16日12:00:00 GMT-0700
您还可以创建日期传递值而不是字符串(检查文档以查看所有选项):
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 在洛杉矶时区)。
请注意,值是零索引(一月为零),而在字符串中,几个月为1个(一月为 1
)。
在上面的调用toDate()
也将将日期/时间转换为浏览器的默认时区。