javascript - moment.js 各地的时间相同

标签 javascript time dst momentjs

今天早上我正在编写一个 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);

CodeOutputHere

最佳答案

关于您的代码:

  • 为此目的,您不应使用 EST 等时区缩写,因为 time zone abbreviations are often ambiguous 。如果您要设置美国东部时间,那么您应该使用 the IANA time zone America/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-timezonemoment.js文档。

关于带有 map 的时刻时区网站 - 您是正确的,演示网站当前存在错误。这不是库本身的错误。我会调查并向即时团队报告。

关于javascript - moment.js 各地的时间相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327707/

相关文章:

java - 基于 LocalDateTime 创建 ZonedDateTime 实例时出现问题

javascript - 使用 jquery 控制嵌入视频

c - 如何在 C 程序中计算时间

Java 创建 PST 格式的日期返回 PDT 格式的日期

javascript - 将 MySQL 数据库中的 UTC 日期时间转换为客户端时区,无需任何库

python - _.tm_isdst 名称 '_' 未定义

windows - 在 Vista/Win7 上使用 WMI 检查夏令时

javascript - Ajax函数: data fields with multiple value

javascript - 将按钮的背景图像设置为页面中已包含的元素

javascript - 将嵌套的 JSON 从 Rails 应用程序发送到 hapijs 应用程序