使用偏移值获取时区缩写



使用moment.js(带moment时区),我想获得当前区域设置的时区缩写(例如PST)。

var now = Date.now(); // 1423254073931
var zone = moment(now).zone(); // 480
var timezone = 

如何获取时区缩写?我在文档和其他地方看到的所有示例都选择了一个特定的区域,如"America/New_York"

从文档中,我似乎可以使用zone.abbr(timestamp)从区域对象中获取信息,但我不确定如何访问区域对象。

JSFiddle

标题和问题不同。在标题中,你问如何使用偏移量来获得它——这是不可能的。有许多时区共享相同的偏移量,因此无法单独区分时区缩写和偏移量。

但在这个问题中,您询问了如何获得当前区域设置的缩写,以及特定的时间戳。

一般的问题是,没有完全可靠的方法来检测当前时区。这一点在这个答案中进行了讨论。所以moment时区不能确定默认情况下应该加载哪个时区。

不过,还有一些其他选择。

当前浏览器/节点

在当前浏览器中,Date对象的toLocaleString函数支持ECMAScript国际化API扩展。如果支持,您可以执行以下操作:

    var d = new Date(); // or whatever date you have
    var tzName = d.toLocaleString('en', {timeZoneName:'short'}).split(' ').pop();

在当前的浏览器中,您会得到一个类似于";EST";。不过,您可能想做一些测试,因为它不适用于所有浏览器。

使用jsTimeZoneDetect

您可以使用像jsTimeZoneDetect这样的脚本来猜测本地时区。通常是正确的,但不能保证。然后,您可以将该值传递给即时时区。

    var tzName = jstz.determine().name();
    var m = moment();
    var abbr = m.tz(tzName).zoneAbbr();  // or .format('z')

使用时刻时区

现在还内置了对即时时区中时区检测/猜测的支持:

    var tzName = moment.tz.guess();
    var abbr = m.tz(tzName).zoneAbbr();  // or .format('z')

moment.js的最新版本将为您提供时区猜测:PR#220例如:moment.tz.guess(); will result in 'America/New_York'

相关内容

  • 没有找到相关文章

最新更新