【问题标题】:Firefox returning invalid for timezone offsets?Firefox 对时区偏移返回无效?
【发布时间】:2013-05-07 19:23:47
【问题描述】:

我从 Firefox 中发现了一个奇怪的结果。使用以下格式:

2013/01/01 00:00:00-0000

对于我的约会,我在时区变为“正数”时遇到了问题。例如。

new Date('2013/01/01 05:00:00-0000')
Date { Tue Jan 01 2013 00:00:00 GMT-0500 (EST) }

但是。

new Date('2013/01/01 05:00:00+0100')
Date { Invalid Date }

我希望得到:

日期 { 2012 年 12 月 31 日星期一 23:00:00 GMT-0500 (EST) }

看来+ 是导致问题的原因,如果我不能使用格林威治标准时间以东的时区,这似乎是一个相当大的问题。

编辑:添加了http://jsfiddle.net/utm4f/

在 Firefox 中运行,它会返回一个无效的日期(我在 OS X 10.8.3 上运行 Firefox 20)

【问题讨论】:

  • 您使用的是哪个版本的 Firefox?您是否已确认它确实适用于负偏移量(您只显示了0)?
  • FF 20.0。是的,我尝试过使用 FF 控制台。 -0200、-0300 等...一切正常,只要您尝试 +0100,它就会失败。

标签: javascript firefox datetime timezone


【解决方案1】:

您可能希望改用 ISO8601 值,例如:

2013-12-31T01:23:45-07:00

ISO 日期解析可在所有较新的浏览器上工作,但在一些较旧的浏览器上会失败,尤其是 IE8。对此here 的浏览器支持有很好的描述,以及对旧版浏览器支持的 shim。

但如果你真的想支持不同浏览器中的所有不一致,最好的方法(恕我直言)是moment.js

var m = moment('2013-12-31T01:23:45-07:00');

或者甚至使用您的其他格式,带有显式解析字符串:

var m = moment('2013/01/01 00:00:00-0000', 'YYYY/MM/DD HH:mm:ssZZ');

【讨论】:

    【解决方案2】:

    好吧,我通过尽我所能找到了问题所在。显然 Firefox 需要时间和时区之间的空格。

    new Date('2013/01/01 05:00:00 +0100')
    new Date('2013/01/01 05:00:00 -0100')
    

    - 时区没有空格不会出错,但 + 时区会出错。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 2012-08-28
      • 2022-01-25
      • 2016-11-25
      • 2017-10-04
      • 1970-01-01
      • 2015-07-30
      相关资源
      最近更新 更多