今天早上我正在编写一个 Chrome 扩展,一切看起来都很好。
但是到了晚上我发现显示的时间是错误的。 起初我以为这是一个代码问题,但进入他们的网站后,似乎每个地方的时间都显示了我的本地时间。
有人遇到同样的问题吗? 或者我应该考虑一起更改库......
我在这里录制了视频 http://youtu.be/g6n6nXJt_uU
函数设置时钟()
{
now = moment.tz(moment.tz().format("MM/DD/YYYY hh:mm"),
"EST").format("MM/DD/YYYY hh:mma");
document.getElementById("时间").innerHTML=now + "NYC";
}
console.log(moment.tz("EST")._d);
console.log(时刻()._d);
设置时钟();
setInterval(setClock,1000);
最佳答案
关于您的代码:
为此目的,您不应使用
EST
等时区缩写,因为 time zone abbreviations are often ambiguous 。如果您要设置美国东部时间,那么您应该使用 the IANA time zoneAmerica/New_York
的标识符。EST
仅存在于 tzdb 中以实现向后兼容。可以说,它应该被排除在时刻时区数据之外。不建议在不带任何参数的情况下调用
moment.tz()
。您应该只调用moment()
。您的代码似乎正在格式化一个时刻,然后将其解析为另一个时刻,然后再次格式化。没有理由跳过这么多的障碍。
您不应使用
_d
属性。这意味着是 moment.js 的内部。 (它可能应该通过关闭来隐藏,但事实并非如此)。相反,请使用.format()
或其他公共(public)函数之一。
最终,我认为您只是在追求:
var now = moment().tz('America/New_York').format("MM/DD/YYYY hh:mm");
我强烈建议您重新阅读 moment-timezone和 moment.js文档。
关于带有 map 的时刻时区网站 - 您是正确的,演示网站当前存在错误。这不是库本身的错误。我会调查并向即时团队报告。
关于javascript - moment.js 各地的时间相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327707/