使用Moment.js显示用户本地区域缩写

时间:2014-06-12 00:35:42

标签: javascript timezone momentjs

我试图在格式中使用z或zz来显示字符串末尾的时区,并发现它已被弃用。 Z和ZZ可以显示-0700,但我希望它能显示PDT。

我获得了时间 - 时区和数据文件,但我无法弄清楚如何使用它来确定客户端的本地时区并显示如下内容:

2014-05-30T22:56:23.967 PDT

而不是:

2014-05-30T22:56:23.967

是否可以使用时刻时区来确定EST CST ... MST PST?

5 个答案:

答案 0 :(得分:26)

从时间 - 时区0.1.0开始,您可以使用formatting additions获取特定时区的缩写:

moment().tz("America/Los_Angeles").format('z');  // PST or PDT

从版本0.5.0开始,您现在可以guess the user's local time zone,当与上述技术结合使用时,您可以执行以下操作:

moment().tz(moment.tz.guess()).format('z');

假设猜测正确,它将显示相关的缩写。

答案 1 :(得分:2)

2020更新

在过去5年中的某些时间,此操作停止了。现在尝试:

var timeZone = moment.tz.guess();
var time = new Date();
var timeZoneOffset = time.getTimezoneOffset();
moment.tz.zone(timeZone).abbr(timeZoneOffset);

答案 2 :(得分:1)

摘自最新的moment timezone docs

moment.tz(String).format("Z z"); // -08:00 PST
moment.tz(String).zoneAbbr();    // PST
moment.tz(String).zoneName();    // PST

一些例子:

moment.tz(moment.tz.guess()).zoneAbbr(); // PST
moment.tz("America/New_York").zoneAbbr(); // EST

答案 3 :(得分:1)

经过大量搜索后,这似乎可行。

const t = moment.tz.guess();
timeZone = moment.tz(t).zoneAbbr();;

答案 4 :(得分:0)

可能这不是一个好方法,但我不想在我的项目中为本地时区添加任何其他脚本,所以我调查了一个时刻对象,我通过下面编写的代码得到了本地时区: / p>

 var test = momentUpdateDate._d.toString().substring(test.indexOf('(')+1, test.indexOf(')'));