2017-08-29 82 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

相關問題