我今天早上正在写一个Chrome扩展程序,一切似乎都很好。

但是到了晚上,我注意到显示的时间是错误的。
起初我以为是代码问题,但进入他们的网站后,似乎每个地方的时间都在显示我的当地时间。

有人遇到过同样的问题吗?
或者我应该考虑一起改变图书馆...

我在这里录制了视频
http://youtu.be/g6n6nXJt_uU

function setClock() { now = moment.tz(moment.tz().format("MM/DD/YYYY hh:mm"), "EST").format("MM/DD/YYYY hh:mma"); document.getElementById("time").innerHTML=now + " NYC"; } console.log(moment.tz("EST")._d); console.log(moment()._d); setClock(); setInterval(setClock,1000);

CodeOutputHere

最佳答案

关于您的代码:


time zone abbreviations are often ambiguous开始,您不应为此使用诸如EST的时区缩写。如果要设置美国东部时间,则应使用America/New_Yorkthe IANA time zone标识符。

EST仅存在于tzdb中,用于向后兼容。可以说,应该将其排除在时刻-时区数据之外。
不建议不带任何参数调用moment.tz()。您应该只呼叫moment()
您的代码似乎正在格式化一瞬间,然后将其解析为另一个瞬间,然后再次将其格式化。没有理由跳过这么多的障碍。
您不应使用_d属性。那应该是在moment.js内部。 (它可能应该由闭包隐藏,但不是)。而是使用.format()或其他公共功能之一。


最终,我认为您只是在追求:

var now = moment().tz('America/New_York').format("MM/DD/YYYY hh:mm");


我强烈建议您重新阅读moment-timezonemoment.js文档。

关于带有地图的时刻-时区网站-您正确的是,演示网站当前存在错误。库本身不是错误。我将对此进行调查并向团队报告。

07-25 23:07
查看更多