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

前端之家收集整理的这篇文章主要介绍了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')

猜你在找的JavaScript相关文章