为什么我的时刻.js不计算时间在不同的时区基于给定的时间戳

Why does my moment.js not calculate time in different timezone based on given timestamp?

本文关键字:时区 时间戳 时刻 我的 js 计算 为什么 时间      更新时间:2023-09-26

我从服务器获得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"