我试图获取两个时区(纽约和悉尼)的时间戳(以毫秒为单位),并在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()
并将其放入时钟,它返回我当地时间。
那么如何使用我的时刻对象在时钟中正确显示纽约时间?
答案 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)。
希望它有所帮助。