【问题标题】:Difference in converted dates windows and mac转换日期 windows 和 mac 的差异
【发布时间】:2013-07-27 01:22:34
【问题描述】:

我发现在 Mac 上我的脚本与在 Windows 上的行为不同。在这两个系统上,我都使用 chrome 作为浏览器,我不知道如何正确解释我的问题,所以我会告诉你。在 Javascript 函数下方,它将 json 时间转换为 javascript 日期。

function getDateFromJSON(value) {
   var retvalue = new Date(parseInt(value.replace("/Date(", "").replace(")/", ""), 10));
   return retvalue
}

当我在 windows pc 上将此函数与 json 日期字符串一起使用时,输出如下所示:Sat Oct 22 1988 00:00:00 GMT+0200 (W. Europe Daylight Time)

当我在 mac 上使用相同的功能时,输出为:Fri Oct 21 1988 23:00:00 GMT+0100 (CEST)

我在mac和windows上使用的代码是:

console.log(getDateFromJSON("/Date(593474400000)/"));

谁能帮我解释一下如何解决这个问题?

【问题讨论】:

  • 括号中的时区名称来自操作系统,并没有通用标准。为什么会有这样的问题?
  • 另一个区别是两台机器的时区设置不同。它们相隔一个时区。
  • 我正在开发一个 Web 应用程序,并且一些客户正在使用 mac,并且日期正在更改,如示例中所示:当此用户保存时,Mac 从原始日期减去日期,日期已更改。 (一开始没有人注意到)
  • 这不是减去一天。 CEST 周五 23:00 与 WEDT 周六 00:00 时间相同。
  • 这与 Mac 和 PC 无关...

标签: javascript json windows date timezone


【解决方案1】:

两个日期相同(调整时区后)

如果要标准化,请使用toUTCString

> new Date(" Sat Oct 22 1988 00:00:00 GMT+0200 (W. Europe Daylight Time)").toUTCString()
'Fri, 21 Oct 1988 22:00:00 GMT'
> new Date("Fri Oct 21 1988 23:00:00 GMT+0100 (CEST)").toUTCString()
'Fri, 21 Oct 1988 22:00:00 GMT'

【讨论】:

  • 我希望得到的时间是欧洲时间,那么有没有办法将mac时间(cest)转换为(w. Europe Daylight Time)?
  • @Josef32 如果您想强制西欧夏令时,您可以通过添加偏移量来调整时间(将时间增加 2 小时,然后调用 toUTCString 并将 GMT 替换为 (W. Europe Daylight Time))或使用适当的库,例如 github.com/mde/timezone-js
  • 感谢大家的帮助,问题是 Mac 上的 chrome 无法识别夏令时。 Nirk 使用 timezone.js 的解决方案奏效了。
  • @Josef32 - 这完全是错误的。 Mac 上的 Chrome 绝对确实识别夏令时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 2021-06-18
  • 1970-01-01
  • 2015-10-08
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多