我今天早上正在写一个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_York
的the 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-timezone和moment.js文档。
关于带有地图的时刻-时区网站-您正确的是,演示网站当前存在错误。库本身不是错误。我将对此进行调查并向团队报告。