2017-08-29 40 views
1

我的那一刻,时区网站上的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

+1

只是一个想法......你使用的是moment.js,所以你不需要处理'日期'古怪。如果你用“新日期(2011,9,16,12)”喂食它,那么你就打败了总体目标。 –

+0

您是否将时区列表添加到moment.tz对象? –

+0

@AnkitSolanki我没有,他们做的,我不是https://momentjs.com/timezone/ – Yoda

回答

0

当您创建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()将日期/时间转换到浏览器的默认时区也是如此。

+3

请记住,这会创建一个“时刻”对象。从那里,还应该使用'format'这样的函数来获得所需的输出。 –

+0

@MattJohnson确实!但由于OP没有具体说明他们希望使用特定格式的日期,所以我没有在问题中加入这个日期。但感谢提醒! – 2017-08-29 18:35:48

相关问题