我从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 AM而不是现在应该在芝加哥的3:55 PM?

最佳答案

当您将一个纯数字传递给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"

关于javascript - 为什么我的moment.js不根据给定的时间戳计算不同时区的时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32875625/

10-11 22:29
查看更多