【问题标题】:Incorrect Javascript Date in Chrome vs FirefoxChrome 与 Firefox 中的 Javascript 日期不正确
【发布时间】:2013-06-27 04:33:49
【问题描述】:

我在 Chrome 中的日期不正确...

我的代码是这样的..

标题包含“2013-06-14T00:00:00”,它是从 WebAPI 返回的 C# 中的 DateTime

正如您在这两种浏览器上看到的那样..

当我将它添加到这样的新 javascript 日期时.. var dt = new Date(title)

我在不同的浏览器中得到不同的日期...

示例 - http://jsfiddle.net/RvUSq/

【问题讨论】:

  • 那里的标题是什么

标签: javascript google-chrome firefox date


【解决方案1】:

看起来 Firefox 假设这种没有时区的日期时间格式是本地时间,而 Chrome/Webkit 假设它是 UTC。

如果api返回的日期时间是UTC,只需在字符串末尾加上一个“Z”,就变成了“2013-06-14T00:00:00Z”,表示时间是UTC,那么你会在两个浏览器中得到相同的结果。

【讨论】:

  • 将 Z 附加到 end.. 现在两个浏览器都显示 6/13/2013.. 但字符串是 6/14/2013,也许从 00:00:00 开始,它假设是前一天?
  • 您的时区是 EST,比 UTC 晚 4 小时,因此如果 UTC 是 2013-06-14 00:00:00,那么您的本地时间是 2013-06-13 20:00:00。因此,您需要知道您正在处理的结果的时区。
  • @jaux 实际上,EST 比 UTC 晚 5 小时。 csharpdev 的当前时区是美国东部时间,比美国东部标准时间早一个小时。
【解决方案2】:

在 C# 中将时间戳转换为 ISO 8601 格式化字符串,例如

var title = "14 JUN 2013 00:00:00" // printed from C#

然后使用Date构造函数

var date = new Date(title);

如果您不指定时区,则客户端计算机中的本地时区将设置为给定时间。如果您指定时区,则会进行所需的计算以将日期转换为本地时区。

var title = "14 JUN 2013 00:00:00";
var date = new Date(title); // Fri Jun 14 2013 00:00:00 GMT+0530 (IST)

var title = "14 JUN 2013 00:00:00 GMT";
var date = new Date(title); // Fri Jun 14 2013 05:30:00 GMT+0530 (IST)

var title = "14 JUN 2013 00:00:00 GMT-0400";
var date = new Date(title); // Fri Jun 14 2013 09:30:00 GMT+0530 (IST)

参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

【讨论】:

  • 谢谢,我刚刚在日期上添加了几个小时以匹配我的时区
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-03
  • 1970-01-01
相关资源
最近更新 更多