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

Javascript 使用moment.js获取时区偏移日期对象,javascript,timezone,momentjs,Javascript,Timezone,Momentjs,我试图获取纽约和悉尼两个时区的时间戳(以毫秒为单位),并在jquery时钟中使用它们来显示相对于本地时间的时间。我正在使用moment.js和moment-timezone.js 这给了我纽约的正确时刻: moment().tz("America/New_York") 我知道这种格式以字符串形式返回正确的纽约时间 2015-04-04T12:52:51-04:00 我现在想要时间戳正确偏移,所以当我把它放入时钟时 $("#clock").clock({"timestamp":customti

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

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

moment().tz("America/New_York")
我知道这种格式以字符串形式返回正确的纽约时间

2015-04-04T12:52:51-04:00
我现在想要时间戳正确偏移,所以当我把它放入时钟时

$("#clock").clock({"timestamp":customtimestamp});
它显示纽约时间。然而,如果我天真地使用

moment().tz("America/New_York").valueOf()
把它放在时钟上,它会返回我的本地时间


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

好的,我对这一点还不太确定。我提出了一个解决方案,我认为它符合你的要求,但我不满意它看起来有多“黑”

在命令行中,下面的内容对我来说似乎没问题。根据我对您使用的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 );
我担心这个问题的答案太粗糙了,不可能是一个有效的答案,但我很难用MomentAPI正确地解决这个问题

最后一件事:如果在浏览器中运行,请确保您具有时区数据,请参见


希望能有所帮助。

谢谢您的帮助-非常感谢。在JS中,我根本没有计算偏移量,我使用了服务器端python。JS中的时区感知日期对象=总梦魇。