使用moment.js获取时区偏移日期对象

时间:2015-04-04 16:54:13

标签: javascript timezone momentjs

我试图获取两个时区(纽约和悉尼)的时间戳(以毫秒为单位),并在jquery时钟中使用它们,以显示相对于当地时间。我正在使用moment.js和moment-timezone.js。

这给了我纽约的正确时刻:

moment().tz("America/New_York")

我知道这是因为format()将正确的NY时间作为字符串返回。

2015-04-04T12:52:51-04:00

我现在希望时间戳正确偏移,所以当我用

将它放入时钟时
$("#clock").clock({"timestamp":customtimestamp});

显示纽约时间。但是,如果我天真地使用

moment().tz("America/New_York").valueOf()

并将其放入时钟,它返回我当地时间。

那么如何使用我的时刻对象在时钟中正确显示纽约时间?

1 个答案:

答案 0 :(得分:0)

好的,我对这一点很不确定。我提出了一个解决方案,我认为你做了你想要的,但我不满意它看起来有多“hacky”。​​

在命令行中,以下似乎没问题。根据我对你使用的JQuery时钟的理解,你应该能够在控制台日志中使用值显示(基本上是本地unix时间加上区域偏移,在这种情况下为负):

var moment = require( 'moment-timezone' ),
    nytz = moment.tz( "America/New_York" ),
    asstring = nytz.format(),
    asunixtime = parseInt( nytz.format( 'X' ) ),
    offset = moment.parseZone( asstring ).utcOffset();

console.log( asunixtime + offset );

我很害怕成为一个有效答案的方式,但我很难用时刻API正确地做到这一点。

最后一件事:如果您在浏览器中运行,请确保您拥有时区数据(请参阅here)。

希望它有所帮助。