从服务器收到的日期为时UTC区,我需要将其转换为特定时区,例如:。America/New_York以下是相同的代码
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
您需要加载以下所有内容:
在moment-timezone主页上,提供了三种不同的moment- timezone分布。
moment-timezone.js是 只是 脚本。它不包含任何时区数据。如果使用此分布,则可以按照文档中的说明,通过moment.tz.add或提取自己的时区数据moment.tz.load。
moment-timezone.js
moment.tz.add
moment.tz.load
moment-timezone-with-data.js包括tz数据库中所有已知的时区数据,适用于网站上提到的版本。
moment-timezone-with-data.js
moment-timezone-with-data-2012-2022.js包含相同的tz数据,但被 截短 到2012年到2022年。这是一个较小的数据文件,足以满足大多数浏览器端应用程序的需要。
moment-timezone-with-data-2012-2022.js
每个都有缩小版本。
因此,如果您获取"Moment Timezone has no data for America/New_York",因为America/New_York它是有效的TZ数据库标识符,那么您根本就没有为其加载数据。您可能正在使用moment- timezone.js而未向其中添加数据。使用或添加时区数据moment.tz.add,或(更适当地)切换到已包含所有时区数据的文件之一。
"Moment Timezone has no data for America/New_York"
moment- timezone.js
但是,不要两者都做。时区数据仅应加载一次,而矩时区脚本仅应加载一次。如果使用moment-timezone-with-data.js或moment- timezone-with-data-2012-2022.js,则不应使用moment-timezone.js,因为该脚本已包含在内。
moment- timezone-with-data-2012-2022.js