18

サーバーから受信した日付は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_York、既知のタイムゾーンですがmoment、それでもタイムゾーンを追加するように求められています.

4

1 に答える 1

62

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

  • 一瞬
  • 瞬間タイムゾーン
  • moment-timezone のタイムゾーンデータ
  • 角モーメント

moment-timezoneホームページでは、moment -timezone の 3 つの異なるディストリビューションを利用できます。

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

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

  • moment-timezone-with-data-2012-2022.jsには同じ tz データが含まれていますが、 2012 年から 2022 年までに切り捨てられています。これははるかに小さいデータ ファイルであり、ブラウザー側アプリケーションの大部分には十分です。

それぞれの縮小版もあります。

したがって、有効な TZ データベース識別子である"Moment Timezone has no data for America/New_York"ため、を取得America/New_Yorkしている場合は、そのデータをロードしていないだけです。おそらくmoment-timezone.jsデータを追加せずに使用しています。でタイム ゾーン データを含めるか、moment.tz.add(より適切には) すべてのタイム ゾーン データが既に含まれているファイルの 1 つに切り替えます。

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

于 2015-10-21T15:55:16.587 に答える