【问题标题】:Firefox refuses to parse date even when properly formatted即使格式正确,Firefox 也拒绝解析日期
【发布时间】:2014-10-03 23:40:13
【问题描述】:

我已经看到,Firefox 仅在使用斜杠来分隔月/日/年的字符串时才能成功解析日期对象。 SO reference。但是,这样做:

var given_input = "2014-09-26 08:00:28.787618";
var d = given_input.replace(/-/g, "/");

var myDate = new Date(d); //Date {Invalid Date}

它适用于 Chrome。我做错了什么?

【问题讨论】:

  • "Firefox 仅在使用斜线分隔月/日/年的字符串时才能成功解析日期对象"——这并不完全正确;事实上,the only required date format in ECMAScript 5 is YYYY-MM-DDTHH:mm:ss.sssZ,它使用破折号。但是,似乎使用破折号可能需要T 日期/时间分隔符,而不是空格。
  • 请注意1.您引用的问题已超过 2 年,FireFox 每 6 周发布一个新版本,即我们现在已经超过 17 个版本。 2. 这个问题是关于Date.parse 而不是new Date
  • @PaulS。是的,我现在看到了。无论如何,问题在于秒。显然只允许两位小数。谢谢。
  • @thomas 实际上,如果您在日期和时间之间放置 "T" 而不是 " ",这是一个有效的日期,而不必对连字符做任何事情
  • @thomas 2014-09-26T08:00:28.787618 -- 如果您输入 "T" 而不是 " ",这是一个有效日期

标签: javascript date firefox cross-browser


【解决方案1】:

事实证明,问题在于秒数末尾有两个以上的小数位。它不遵循@apsillers 指定的格式。如果您不关心时间,这可行,只关心日期:

input_date.replace(/(\d{4})-(\d{2})-(\d{2}).*$/g, "$1/$2/$3");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    相关资源
    最近更新 更多