2016-09-18 3149 views
0

我嘗試按照moment.js初始指定eastern 8時區。使用moment.js設置初始時區

我將我的os時區更改爲western 4,然後我輸入如下的相同時間戳。

moment().utcOffset(-240); 
moment(1473998400000).toDate(); 

moment().utcOffset(480); 
moment(1473998400000).toDate(); 

// both output >>> Fri Sep 16 2016 00:00:00 GMT-0400 (EDT) 

但我不明白,爲什麼我也得到不同的初始時區相同的輸出?

我做錯了什麼:(

+0

設置'utcOffset'只會改變'moment'對象的行爲。它不會改變你正在談論的時間,因此''toDate''不會產生,因爲'Date'對象只能在當地時間使用。 –

回答

2

更新:

首先,不要使用.toDate(),或者您將收到一個JavaScript Date對象,你將不得不自己把它轉換

二,您需要撥打.utcOffset()初始化時刻對象。

moment(1473998400000).utcOffset(-240).format(); // 2016-09-16T00:00:00-04:00 
moment(1473998400000).utcOffset(480).format(); // 2016-09-16T12:00:00+08:00 

此外,檢查從docs以下摘錄:

如果你想要一個實際的時區 - 時間在特定位置,如 美洲/洛杉磯,考慮moment-timezone

+0

感謝您的建議,我嘗試'時間 - 時區',但也得到相同的輸出。在我看來,它可以幫助我將時間戳轉換爲正確的時區作爲我的初始設置,但現在我不知道如何修復:( –

+0

@E_Jovi我更新了答案,請現在檢查它 – felipeptcho

+0

感謝您的回覆,我打算現在使用'moment-timezone' :) –