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

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...