Angular Moment:Moment Timezone没有America/New_York的数据

Ama*_*pta 15 javascript timezone angularjs momentjs angular-moment

从服务器收到的日期是在UTC时区,我需要将其转换为特定的时区,例如:America/New_York.Florlowing是相同的代码

  <span class="bold" ng-bind="sess.date_time | amTimezone:'America/New_York' | amDateFormat:'h:mm a'"></span>
Run Code Online (Sandbox Code Playgroud)

但是这样做我得到以下错误:

Moment Timezone has no data for America/New_York. See http://momentjs.com/timezone/docs/#/data-loading/.
Run Code Online (Sandbox Code Playgroud)

但这America/New_York是一个已知的时区,moment但仍然要求我添加时区.

Mat*_*int 50

您需要加载以下所有内容:

  • 时刻
  • 那一刻,时区
  • 时区数据的时刻,时区
  • 角时刻

时刻时区主页上,有三种不同的时刻分布.

  • moment-timezone.js只是脚本.它不包含时区数据.如果您使用此分发,则可以按照文档中的说明moment.tz.add,或者moment.tz.load按照文档中的说明,提取您自己的时区数据.

  • moment-timezone-with-data.js包括来自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,要么(更恰当地)切换到已包含所有时区数据的文件之一.

但是,不要两者都做.时区数据只应加载一次,而moment-timezone脚本只能加载一次.如果您使用moment-timezone-with-data.js或者moment-timezone-with-data-2012-2022.js,则不应使用moment-timezone.js,因为该脚本已包含在内.

  • 大!!有效.得到"Moment Timezone 0.4.0已经加载没有任何数据"错误然后仔细重新阅读你的答案,最后两行最后一行解开了谜:) (2认同)
  • 感谢您对@AmanGupta的评论。不要同时使用!(时区和数据)脚本,这是在此处学习的课程。 (2认同)