微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

使用moment.js(使用moment-timezone),我想获取当前语言环境的时区缩写(例如PST).
var Now = Date.Now(); // 1423254073931
var zone = moment(Now).zone(); // 480
var timezone =

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

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

JSFiddle

解决方法

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

但是在这个问题中,您询问了如何获取当前语言环境的缩写,具体时间戳.

一般的问题是没有完全可靠的方式来检测当前的时区.这在this answer中讨论.所以moment-timezone不能确定地告诉哪个时区认加载.

还有一些其他选项可用.

>在某些浏览器中,Date对象的toLocaleString功能支持ECMAScript Internationalization API扩展.支持时,您可以做到这一点(没有时刻):

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

在受支持的浏览器中,您将获得像“EST”这样的值.您可能想要进行某种测试,因为它不会在所有浏览器中运行.
>您可以使用像jsTimeZoneDetect这样的脚本来猜测当地的时区.这通常是正确的,但不能保证.然后,您可以将该值传递给时区.

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')

原文地址:https://www.jb51.cc/js/154050.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐