2015-08-05 9 views
1

У меня проблема с показом часового пояса с moment.js.Формат datetime с moment.js для отображения часового пояса

Я пытался с этим кодом:

var result = moment(someDate).format("MM/DD/YYYY HH:mm A Z"); 

и я получаю возвращение, например: 08/05/2015 06:18 PM +02:00, это хорошо, но я хочу, чтобы мой выходной быть как 08/05/2015 06:18 PM WEDT или что-то подобное, с сокращениями часовых поясов.

Пробовал с помощью этого кода, но я получаю пустой часовой пояс на конце:

var result = moment(someDate).format("MM/DD/YYYY HH:mm A z"); 

или

var result = moment(someDate).format("MM/DD/YYYY HH:mm A zz"); 

UPDATE

Так как это было предложено @ Matt Johnson, я использовал этот подход показать часовой пояс, используя moment-timezone-with-data.js и tzdetect.js:

var tzName = tzdetect.matches()[0]; 
var result = moment.tz(myDate, tzName).format("MM/DD/YYYY h:mm A zz"); 

ответ

1

Как описано in the documentation:

Примечание: по состоянию на 1.6.0, маркеры формата г/ZZ устарели. Read more about it here.

Общая проблема заключается в том, что сокращения в часовом поясе недоступны в браузере через согласованный API. Чтобы обеспечить их, нужно иметь внешний источник данных.

Возможно, вы захотите ознакомиться с использованием дополнения moment-timezone. Он предоставляет информацию о часовом поясе, включая аббревиатуры. Вам нужно будет знать конкретный часовой пояс, с которым вы работаете. Например:

moment.tz("2015-08-05T00:00:00+01:00", "Europe/London").format("MM/DD/YYYY hh:mm A z"); 
// "08/05/2015 12:00 AM BST" 

Кроме того, не следует смешивать HH (часы работы 24-часовой) с A (12-часовой AM/PM целеуказателя). Используйте либо hh с A, либо используйте HH без A.

+0

Спасибо за объяснение, я просто читаю ваш другой ответ здесь: http://stackoverflow.com/a/28377706/1081079, и я думаю, что я могу объединить эти два подхода, чтобы получить то, что мне нужно. – freshbm

+0

Спасибо, я забыл об этом. :) –

Смежные вопросы