2016-06-08 36 views
0

我們試圖找到使用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

回答

0

閱讀更多我相信parseZone是正確的解決方案,因爲我已經在日期字符串中包括時區信息。

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

1

區域設置和時區是正交的東西。語言環境不會明確指定時區。你需要分別設置你的時區。您可以使用Momemt時區,然後您可以使用例如

.tz('Europe/London') 
+0

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

+0

'moment('2016-05-01T00:00:00 + 00:00')'創建一個新的時刻對象,它存儲一個時刻。但是,當使用'.format()'時,它將顯示在瀏覽器的時區中 - 在大多數情況下這是正確的。 – meskobalazs

+0

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

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()); 

上述會給你的亞利桑那州的時區。