Проблема с методом moment.js: moment.tz.guess () в браузере Chrome - PullRequest
0 голосов
/ 13 июня 2018

У меня проблема со сравнением значений зон в моем коде, это своего рода ошибка из того, что я понимаю.

Мое требование : сравните часовой пояс, который мы получаем с момента, содин у меня в массиве и установить его где-нибудь.Я получаю значение из moment.js, используя moment.tz.guess () , и сравниваю его со значением / именем часовых поясов, которое присутствует в моем локальном массиве.

Issue Faced: только в случае браузера Google Chrome я получаю значение moment.tz.guess () как Asia / Calcutta , тогда как в случае Firefox и IE / Edge,я получаю Азия / Калькутта .

Мой локальный массив имеет значение / имя как Азия / Калькутта, следовательно, я не могу сравнить значения в браузере Chrome, но я могуполучить правильное сравнение в других упомянутых браузерах.

Это проблема, связанная с часовым поясом, поскольку ранее Азия / Калькутта была Азия / Калькутта.

Кроме того, я использую последнюю версию moment.js и имеюпоследние версии браузеров в моей системе установлены, поэтому я не уверен, где проблема.Кроме того, я использую angularJS 1.6 в качестве основного фреймворка для пользовательского интерфейса.

Буду признателен за любую помощь.

Ниже приведен простой вопрос о фактической проблеме на моей стороне, которая возникает как момент.tz.guess ()

<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.11/moment-timezone-with-data-2010-2020.min.js"></script>
<script>
var timezone = moment.tz.guess();
alert(timezone);

http://jsfiddle.net/wcu21kr5/3125/

дает различные значения в Chrome против Firefox (Калькутта против Калькутты), правильная и последняя Калькутта

ДляВ настоящее время в моем коде я непосредственно сравнил строковое значение из моего массива с тем, которое я получил из moment.tz.guess (), а затем посчитал их равными и затем продолжил.

Таким образом, мое приложение работает, но это своего рода жесткая проверка кода для конкретного случая, что если произойдут изменения в названиях городов других часовых поясов?добавление нового города каждый раз не является хорошим вариантом

1 Ответ

0 голосов
/ 14 июня 2018

Это известное поведение Chrome, которое приводит к тому, что Момент делает неверное предположение.Команда разработчиков Moment не заинтересована в разработке обходного пути.Я бы не стал называть это ошибкой, поскольку все спецификации позволяют возвращать устаревшие TZ, но это определенно недостаток в спецификации.Разработчики Moment считают, что большинство потребителей должно быть в порядке с устаревшей TZ.

https://github.com/moment/moment/issues/3852

...