使用moment.js格式化日期时间以显示时区

时间:2015-08-05 15:30:57

标签: javascript timezone momentjs

我有问题用moment.js显示时区。

我尝试使用此代码:

var result = moment(someDate).format("MM/DD/YYYY HH:mm A Z");

我得到了回复,例如:08/05/2015 06:18 PM +02:00,这很好,但我希望我的输出类似于08/05/2015 06:18 PM WEDT或类似的东西,并带有时区缩写。

尝试使用此代码,但最后我得到空时区:

var result = moment(someDate).format("MM/DD/YYYY HH:mm A z"); 

var result = moment(someDate).format("MM/DD/YYYY HH:mm A zz");

更新

正如@Matt Johnson建议的那样,我使用此方法使用moment-timezone-with-data.jstzdetect.js来显示时区:

var tzName = tzdetect.matches()[0];
var result = moment.tz(myDate, tzName).format("MM/DD/YYYY h:mm A zz");

1 个答案:

答案 0 :(得分:2)

如上所述in the documentation

  

注意:从1.6.0开始,不推荐使用z / zz格式标记。 Read more about it here

一般问题是浏览器无法通过一致的API提供时区缩写。为了提供它们,必须有一个外部数据源。

您可能需要考虑使用moment-timezone插件。它提供时区信息,包括缩写。您必须知道您正在使用的特定时区。例如:

moment.tz("2015-08-05T00:00:00+01:00", "Europe/London").format("MM/DD/YYYY hh:mm A z");
// "08/05/2015 12:00 AM BST"

此外,您不应将HH(24小时制的小时)与A(12小时上午/下午指示符)混合。将hhA一起使用,或使用不HH的{​​{1}}。