サーバーから受け取った日付は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
の既知のタイムゾーンですが、それでもタイムゾーンを追加するように求められます。
次のすべてをロードする必要があります。
moment-timezone のホームページには、モーメントとタイムゾーンの3つの異なる分布があります。
moment-timezone.js
はjustスクリプトです。時間帯データは含まれていません。このディストリビューションを使用する場合、ドキュメントで説明されているように、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
を使用しないでください。そのスクリプトはすでに含まれています。