2016-09-18 127 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' :) –