时刻语言环境设置不正确

问题描述:

我们试图找到使用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 

我期待看到对于格式化为“恩日期gb'语言环境,但它显示了亚利桑那州时间。我错过了什么吗?

+0

在这种情况下,区域设置是错误的概念。我需要的是: 'moment.parseZone('2016-05-01T00:00:00 + 00:00')' – tgrrr

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

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

区域设置和时区是正交的东西。语言环境不会明确指定时区。你需要分别设置你的时区。您可以使用Momemt时区,然后您可以使用例如

.tz('Europe/London') 
+0

但我已明确指定通过日期格式的偏移? – tgrrr

+0

'moment('2016-05-01T00:00:00 + 00:00')'创建一个新的时刻对象,它存储一个时刻。但是,当使用'.format()'时,它将显示在浏览器的时区中 - 在大多数情况下这是正确的。 – meskobalazs

+0

谢谢。是的locale不是我所需要的! – tgrrr

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

要指定您需要在您的项目Moment.js Timezone library一个时区,然后做一些事情,如:

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

上述会给你的亚利桑那州的时区。