如何从瞬间对象中获取时区值?

时间:2016-08-17 09:19:33

标签: javascript date momentjs

我有一个像下面的时刻对象

enter image description here

我想从中提取时区值" PDT"。 如何使用时刻获得此值?

我试过了

moment.tz(this.startDate.toString()).zoneAbbr();

但返回一个值" UTC"

有什么建议吗?

4 个答案:

答案 0 :(得分:0)

我害怕你只会得到这个...... 因为这是getZoneAbbr函数的工作方式。

function getZoneAbbr () {
    return this._isUTC ? 'UTC' : '';
}

现在,这是一个问题。 UTC可以与timeOffest一起使用来确定您所在的TimeZone。 并且唯一的方法是使用它们的偏移值来制作时区名称列表,然后比较你得到的偏移值。 然后你可以选择你的时区。

即使是普通的JavaScript Date函数也没有这种支持。你必须自己创建那个偏移和时区名称地图。

答案 1 :(得分:0)

您可能无法为您解析的日期添加特定的时区:

moment.tz(moment.now(), 'America/New_York').zoneAbbr();

答案 2 :(得分:0)

Moment有z / zz format参数来获取缩写的时区名称,正如文档所说:

  

注意: 1.6.0 开始,z / zz格式令牌已从普通时刻对象中弃用。 Read more about it here.但是,如果您使用带有时刻 - 时区插件的特定时区,则他们执行

在链接的github问题中,moment developer suggest在创建时刻对象时使用moment.tz.guess(),以便有机会获得环境的时区。

这是一个可用于获取缩写时区名称的工作代码示例:

var startDate = new Date();
var momObj = moment.tz(startDate, moment.tz.guess());
var zoneAbbr1 = momObj.zoneAbbr();
console.log(zoneAbbr1);
var zoneAbbr2 = momObj.format('z')
console.log(zoneAbbr2);
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.13.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.5/moment-timezone-with-data-2010-2020.min.js"></script>

答案 3 :(得分:0)

确保已安装 moment-timezone

npm install moment-timezone --save

之后

var moment1 = require('moment-timezone');
var myTime = moment1.tz('America/Denver').format('YYYY-MM-DD HH:mm:ss');
console.log(myTime);