如何使用moment.js库获取时区列表?

use*_*271 38 momentjs

我需要制作一个所有实际世界时区的<select>列表.如何获得带有时区列表的数组?

mar*_*eng 42

首先包括moment-timezone数据然后你可以使用moment.tz.names();

  • "要使用时刻时区,你需要moment@2.6.0 +,moment-timezone.js和时刻 - 时区数据." http://momentjs.com/timezone/docs/#/using-timezones/ (2认同)
  • moment.tz.names()仅显示当前加载的时区,而不是所有时区 (2认同)

小智 19

var timeZones = moment.tz.names();
Run Code Online (Sandbox Code Playgroud)

http://momentjs.com/timezone/docs/#/data-loading/getting-zone-names/

  • 它仅显示已加载时区的列表,要加载时区,您必须知道其名称,所以这是一个很棒的Catch-22 (2认同)
  • 这似乎不再是真的 - 该链接上的文档说“要获取所有可用时区名称的列表,请使用 moment.tz.names”。 (2认同)

小智 9

请注意,默认情况下,moment.js没有附带moment-timezone.js,你必须得到它.

bower install moment-timezone --save
npm install moment-timezone --save
Install-Package Moment.Timezone.js
Run Code Online (Sandbox Code Playgroud)

或者下载

然后你可以用这种方式需要一组时区:

var timezones = moment.tz.names();
Run Code Online (Sandbox Code Playgroud)

另一个有用的技巧是你可以设置(猜测)当前用户时区,这样你就不必让用户在一个巨大的列表中查找他的时区,或者你可以默认设置一个时区然后让用户更改它如果他需要它.

var currentUserTimezone = moment.tz.guess();
Run Code Online (Sandbox Code Playgroud)

此外,如果需要,您可以获得时区的缩写,以防您需要提供时区缩写:

moment.tz('America/Los_Angeles').format('z') //PDT
Run Code Online (Sandbox Code Playgroud)

moment-timezone.js完整文档


Ito*_*Ito 7

对于时区,您应该手动添加自己制作的时区JS文件。

在此页面中,您可以选择区域并在您moment.js先加载后生成要加载的文件。

你应该有这样的东西,看看:

<script src="/javascripts/modules/moment/moment-with-langs.min.js"></script>
<script src="/javascripts/modules/moment/moment-timezone.min.js"></script>
<script src="/javascripts/modules/moment/moment-timezone-data.js"></script>
Run Code Online (Sandbox Code Playgroud)

JSmoment-timezone-data.js是时区的自定义列表。

但是,到目前为止我知道,MomentJS不会为您返回所有时区的列表,因为时区也可以更改。如果您需要填充select标签,我建议您从上面的链接手动解析时区列表。

  • 链接失效了,没用 (11认同)
  • 答案中提到的链接说“即将推出”。有新链接吗?参考 [链接](http://momentjs.com/timezone/data/) (5认同)

Vig*_*aja 6

包括来自 cdn 的moment-timezone.js

现在,用于moment.tz._names将时区作为对象获取。该方法moment.tz.names()还将时区作为数组提供,但速度较慢。

0.4.0 之前的版本没有moment.tz._names对象,因此moment.tz.names()必须使用方法。


小智 5

有378个时区。时区是关于时间的规则的任意组合,包括DST,该规则在任何时间段内都有效,无论在任何区域,无论多么微小,例如在印第安纳州的一个小镇上,决定将夏令时改为两个在1940年代。或者,以最近的例子为例,朝鲜时区刚刚上调了30分钟。或仅针对南极洲的十几个时区。

我怀疑您是否要在下拉菜单中显示所有这些时区。您需要选择最常见的50-100左右。您既可以自己做,也可以从Google等网站复制列表。您可能希望从24个偏移量中至少选择一个时区,因此无论一个人在哪里,他们都可以找到一种匹配的方式。