我试图获得两个时区(纽约和悉尼)的时间戳(以毫秒为单位),并在jquery时钟中使用它们,以显示相对于当地时间的时间戳。我使用的是moment.js和moment-timezone.js.
这给了我纽约的正确时机:
moment().tz("America/New_York")
我知道format()以字符串形式返回正确的纽约时间。
2015-04-04T12:52:51-04:00
我现在希望时间戳正确偏移,所以当我用将其放入时钟时
$("#clock").clock({"timestamp":customtimestamp});
它显示纽约时间。然而,如果我天真地使用
moment().tz("America/New_York").valueOf()
把它放在时钟上,它会返回我的当地时间。
那么,如何使用我的时刻对象在时钟中正确显示纽约时间呢?
好吧,我对这件事还很不确定。我想出了一个解决方案,我认为它符合你的要求,但我对它看起来多么"粗鲁"感到不满意。
在命令行中,以下内容对我来说似乎还可以。根据我对您使用的JQuery时钟的理解,您应该能够在控制台日志中使用值show(基本上是本地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来正确地做这件事。
最后一件事:如果你在浏览器中运行,请确保你有时区数据(请参阅此处)。
希望能有所帮助。