【问题标题】:Why does my moment.js not calculate time in different timezone based on given timestamp?为什么我的 moment.js 不根据给定的时间戳计算不同时区的时间?
【发布时间】:2015-09-30 21:05:18
【问题描述】:

我在 GMT+0(格林威治标准时间)从服务器获取时间。基于此,我想计算和显示芝加哥的时间。我写了一个javascript:

function updateTime() {
    var chicago = moment(1443646527).tz("America/Chicago").format('h:mm:ss A');
    $('#time').html(chicago + ", ");
};

moment.tz.add('America/Chicago|CST CDT|60 50|01010101010101010101010|1BQU0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0');

updateTime();
setInterval(function () {
    updateTime();
}, 1000);

并且在那个javascript给定的时间戳等于:

 GMT: Wed, 30 Sep 2015 20:55:27 GMT

那么为什么输出时我得到的是上午 11:00:46 而不是现在应该在芝加哥的下午 3:55?

【问题讨论】:

  • 由于您显示的是固定输入,setInterval 调用实际上并没有做任何事情,或者添加到您的问题中。

标签: javascript jquery datetime momentjs


【解决方案1】:

当您将一个普通数字传递给 moment 构造函数时,它预计自 Unix 纪元以来以 毫秒 为单位。您作为示例给出的值似乎以 为单位。

您可以执行以下任一操作:

// multiply by 1000
moment(1443646527 * 1000).tz("America/Chicago").format('h:mm:ss A')

或者:

// use the unix function
moment.unix(1443646527).tz("America/Chicago").format('h:mm:ss A')

无论是哪一种,您都会得到预期的答案"3:55:27 PM"

【讨论】:

    猜你喜欢
    • 2018-07-08
    • 1970-01-01
    • 2013-07-16
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2013-04-09
    相关资源
    最近更新 更多