【问题标题】:Javascript Date creation difference - in IE vs chromeJavascript 日期创建差异 - 在 IE 与 chrome 中
【发布时间】:2020-09-14 03:32:48
【问题描述】:

我从代表日期的后端系统中得到一个很长的信息。 我使用 - new Date(long) 将 long 转换为 javascript Date。

我在 IE 和 Chrome 中得到相同长的不同日期。 正确的日期是 Chrome 中显示的日期。

example

例如: new Date(1032382800000)

IE 中,日期值为 - Wed Sep 18 2002 23:00:00 GMT +0200。 在 Chrome 中,日期值为 - Thu Sep 19 2002 00:00:00 GMT +0300

我该如何解决这种差异?

【问题讨论】:

  • 这两个日期相同。时区只是不同 - 在一种情况下为 +3,在另一种情况下为 +2。由于时区相隔一小时,因此午夜休息一小时会将日期回滚一天。但在这两种情况下,它仍然是完全相同的 UTC 时间。
  • 但是用户看到两个不同的日期。
  • 我想一个问题是为什么 IE 与 Chrome 处于不同的时区。除此之外,您可以将其视为 UTC 日期,因此日期不会依赖于本地时区。但我不确定这是否真的是你需要的。
  • UTC 日期在我的情况下是错误的日期
  • 在这种情况下,问题是您为什么将错误的日期作为 Unix 时间戳发送?时间戳始终采用 UTC。

标签: javascript google-chrome date internet-explorer


【解决方案1】:

我找到了解决方法。 因为这些日期对象中的时间不相关,所以我运行以下代码:

       var iTimezoneOffset = dDate.getTimezoneOffset() - (new Date()).getTimezoneOffset();
       if (iTimezoneOffset != 0) {
            dDate.setMinutes(dDate.getMinutes() + iTimezoneOffset);
       }

【讨论】:

  • 两个 Date 实例应该具有不同时区偏移的唯一原因是主机系统配置为观察夏令时并且日期位于夏令时边界的任一侧。这个“有效”只是机会。
  • 那你建议我怎么做?
猜你喜欢
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 1970-01-01
  • 2011-01-24
相关资源
最近更新 更多