时刻区域设置未正确设置

时间:2016-06-08 13:21:42

标签: javascript momentjs

我们正在尝试使用在亚利桑那州的服务器上运行时使用moment.js和失败的测试发现问题,但在英国本地运行时取得成功。我们在创建片刻之前手动设置语言环境,并且可以看到本地' en-gb'已安装。

这个小提琴突出了我认为问题所在(首先需要将计算机设置为亚利桑那州时区!https://jsfiddle.net/2ve10ax4/

moment.locale('en-gb');
console.log(moment.locale());
// en-gb
console.log(moment('2016-05-01T00:00:00+00:00').format()); 
// 2016-04-30T17:00:00-07:00

我希望看到关于' en-gb'区域设置,但它显示了亚利桑那州的时间。我错过了什么吗?

3 个答案:

答案 0 :(得分:1)

区域设置和时区是正交的东西。区域设置未明确指定时区。您需要单独设置时区。您可以使用Momemt Timezone,然后您可以使用例如。

.tz('Europe/London')

答案 1 :(得分:1)

通过设置moment.locale('en-gb'),您已指定了区域设置/语言(brittish-english),而不是时区。

要指定时区,您需要在项目中包含Moment.js Timezone library,然后执行以下操作:

console.log(moment('2016-05-01T00:00:00+00:00').tz('America/Phoenix').format());

以上将为您提供亚利桑那州的时区。

答案 2 :(得分:1)

在阅读更多内容后,我相信parseZone是正确的解决方案,因为我已经在日期字符串中包含了时区信息。

console.log(moment.parseZone('2016-05-01T00:00:00+00:00').format());