【问题标题】:using moment.js to set initial time zone使用 moment.js 设置初始时区
【发布时间】:2016-09-18 05:33:54
【问题描述】:

我尝试按照 moment.js 来初始化指定eastern 8 时区。

我将我的操作系统时区更改为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) 

但我不明白为什么我也会从不同的初始时区得到相同的输出?

我做错了什么:(

【问题讨论】:

  • 设置utcOffset 只会改变moment 对象的行为。它不会改变您正在谈论的时间,因此不会导致您从toDate 获得,因为Date 对象仅适用于当地时间。

标签: javascript momentjs


【解决方案1】:

更新:

首先,不要使用.toDate(),否则你会收到一个JavaScript Date对象,你必须自己转换它。

其次,需要在初始化的moment对象上调用.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

【讨论】:

  • 感谢您的建议,我尝试了moment-timezone,但也得到了相同的输出。在我看来,它可以帮助我在初始设置时将时间戳转换为正确的时区,但现在我不知道如何修复:(
  • 感谢您的回复,我打算现在使用moment-timezone :)
猜你喜欢
  • 2017-02-11
  • 2018-03-22
  • 2016-07-06
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 2018-06-10
相关资源
最近更新 更多