web-dev-qa-db-ja.com

Angularモーメント:モーメントタイムゾーンにアメリカ/ニューヨークのデータがありません

サーバーから受け取った日付はUTCタイムゾーンであり、特定のタイムゾーンに変換する必要があります。例:America/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_Yorkmomentの既知のタイムゾーンですが、それでもタイムゾーンを追加するように求められます。

15
Aman Gupta

次のすべてをロードする必要があります。

  • 瞬間
  • モーメントタイムゾーン
  • タイムゾーンdatamoment-timezone
  • 角モーメント

moment-timezone のホームページには、モーメントとタイムゾーンの3つの異なる分布があります。

  • moment-timezone.jsjustスクリプトです。時間帯データは含まれていません。このディストリビューションを使用する場合、ドキュメントで説明されているように、moment.tz.addまたはmoment.tz.loadのいずれかで独自のタイムゾーンデータを取得することが期待されています。

  • moment-timezone-with-data.jsには、Webサイトで言及されているバージョンの tzデータベース からのすべての既知のタイムゾーンデータが含まれています。

  • 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で含めるか、(より適切には)すべてのタイムゾーンデータが既に含まれているファイルの1つに切り替えます。

ただし、両方は行わないでください。タイムゾーンデータは一度だけロードする必要があり、moment-timezoneスクリプトは一度だけロードする必要があります。 moment-timezone-with-data.jsまたはmoment-timezone-with-data-2012-2022.jsを使用する場合は、moment-timezone.jsを使用しないでください。そのスクリプトはすでに含まれています。

50