2015-10-21 2 views
6

Дата получения от сервера в UTC часовом поясе, и мне нужно, чтобы преобразовать его в определенной временной зоны, например: America/New_York Следуя за это код жеУгловой момент: Момент Timezone не имеет данных для Америки/New_York

<span class="bold" ng-bind="sess.date_time | amTimezone:'America/New_York' | amDateFormat:'h:mm a'"></span> 

но на этом я получаю следующее сообщение об ошибке:

Moment Timezone has no data for America/New_York. See http://momentjs.com/timezone/docs/#/data-loading/. 

но America/New_York является известным часовым поясом для moment, но до сих пор она просит меня, чтобы добавить часовой пояс.

ответ

29

Вы должны загрузить все следующий:

  • момента
  • момент-часового пояс
  • часового пояса данные для моментного-часового пояса
  • углового момента

На домашней странице moment-timezone доступны три разных дистрибутива o f момент-время.

  • moment-timezone.jsэто просто сценарий. Он не содержит данных часового пояса. Если вы используете этот дистрибутив, ожидается, что вы потянете ваши собственные данные часового пояса, либо на moment.tz.add, либо на moment.tz.load, как описано в документах.

  • moment-timezone-with-data.js содержит все известные данные часового пояса от tz database, для версии, упомянутой на веб-сайте.

  • moment-timezone-with-data-2012-2022.js включает в себя одни и те же данные TZ, но усеченные до нескольких лет 2012 через 2022 Это гораздо меньший размер файла данных, и является достаточным для большинства браузера приложений на стороне.

Имеются также миниатюрные версии каждого из них.

Так что, если вы получаете "Moment Timezone has no data for America/New_York", так как America/New_York является действительным идентификатором базы данных TZ, то вы просто не загрузили данные для него. Вероятно, вы используете moment-timezone.js, не добавляя к нему данные. Либо укажите данные часового пояса с moment.tz.add, либо (более подходящим образом) переключиться на один из файлов, который уже включает все данные часового пояса.

Однако, не делайте того и другого. Данные о часовых поясах следует загружать только один раз, а сценарии момента и времени должны загружаться только один раз. Если вы используете либо moment-timezone-with-data.js, либо moment-timezone-with-data-2012-2022.js, вы не должны использовать moment-timezone.js, так как этот скрипт уже включен.

+0

В бэкэнд (экспресс) я не «требовал» js для данных часового пояса, и он работает нормально. Возможно, для клиентской стороны нам необходимо явно получить эти данные, как вы упомянули, сообщит вам, будет ли это работать. –

+2

Отличный !! Это сработало. Получалось, что «Moment Timezone 0.4.0 уже загрузился без каких-либо данных», а затем тщательно перечитал ваш ответ, а последние две последние строки решили тайну :) –

+1

Спасибо за ваш комментарий @AmanGupta. Не используйте оба!(часового пояса и данных), является уроком, изученным здесь. – paqogomez

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