【问题标题】:Get timezoned offset date objects using moment.js使用 moment.js 获取时区偏移日期对象
【发布时间】:2015-04-04 16:54:13
【问题描述】:

我正在尝试获取两个时区(纽约和悉尼)的时间戳(以毫秒为单位),并在 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()

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

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

【问题讨论】:

    标签: javascript timezone momentjs


    【解决方案1】:

    好吧,我对这一点还很不自信。我想出了一个解决方案,我认为它可以满足您的需求,但我对它看起来的“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 );
    

    恐怕很难成为一个有效的答案,但我很难用 moment API 正确地做到这一点。

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

    希望对你有所帮助。

    【讨论】:

    • 感谢您的帮助 - 非常感谢。我最终没有在 JS 中计算偏移量,我使用了服务器端 python。 JS 中的时区感知日期对象 = 噩梦。
    猜你喜欢
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2014-05-24
    • 2018-03-15
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    相关资源
    最近更新 更多