2016-08-22 110 views
0
我使用moment.js與時區創建屬於特定時區中的日期時間

使用MomentJS偏移:如何顯示日期時間考慮與時區

var datetime = moment.tz("2016-08-16 21:51:28","Europe/London"); 

因爲這種構造是知道的DST(夏令時),moment.js會自動添加+1小時偏移量。 datetime.format()將顯示:2016-08-16T21:51:28+01:00

但是,似乎打印日期時,未考慮該偏移量。例如。 datetime.format('DD.MM.YYYY - HH:mm:ss')將顯示:16.08.2016 - 21:51:28但我不想顯示:16.08.2016 - 22:51:28(考慮1小時的DST偏移的時間)。有誰知道如何做到這一點?

+0

看到這個小提琴。 http://jsfiddle.net/pe1gtbgj/另外。該文檔可能有助於http://momentjs.com/guides/#/lib-concepts/date-time-math/ –

回答

2

你錯誤地解釋了你得到的輸出。

當您在ISO8601時間戳的末尾看到+01:00時,並不意味着您需要添加一小時。這意味着給定的時間戳是在UTC時間前一小時的本地時區。時刻不會增加一個小時。它僅僅反映了倫敦的當地時間。

對於您提供的時間戳,顯示22:51:28將是一個錯誤。倫敦當地時間爲21:51:28,等效的UTC時間爲20:51:28。直到您在UTC + 2去東部一個時區之前,您纔會找到22:51:28。現在

,如果你什麼意思做的是從UTC轉換到倫敦的時候,那麼你需要創建輸入爲UTC,然後再轉換。

moment.utc("2016-08-16 21:51:28").tz("Europe/London") 

然後格式化時,這是你要的結果,你會得到22:51:28,但是這是一個時間不同點。

相關問題