我从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/