gpt4 book ai didi

javascript - 使用偏移值获取时区缩写

转载 作者:可可西里 更新时间:2023-11-01 01:36:41 26 4
gpt4 key购买 nike

使用 moment.js(带有 moment-timezone),我想获取当前语言环境的时区缩写(例如 PST)。

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

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

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

JSFiddle

最佳答案

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

但是在问题中,您询问了如何获取特定时间戳的当前语言环境的缩写。

普遍的问题是,没有完全可靠的方法来检测当前时区。这在 this answer 中讨论.所以 moment-timezone 不能确定地告诉默认应该加载哪个时区。

不过还有一些其他选项可用。

当前浏览器/节点

在当前的浏览器中,ECMAScript Internationalization API toLocaleString 支持扩展Date 对象的函数。如果支持,您可以这样做:

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

在当前的浏览器中,您将获得类似“EST”的值。不过,您可能想要进行某种测试,因为它不适用于所有浏览器。

使用 jsTimeZoneDetect

您可以使用类似 jsTimeZoneDetect 的脚本猜测本地时区。它通常是正确的,但不能保证。然后您可以将该值传递给 moment-timezone。

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

使用时刻时区

现在在 moment-timezone 中也内置了对时区检测/猜测的支持。 :

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

关于javascript - 使用偏移值获取时区缩写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28374901/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com