当前位置: 首页 > 知识库问答 >
问题:

如何修复IE 11中的日期解析[重复]

葛哲彦
2023-03-14

我正在尝试使用date解析动态创建的日期格式。解析函数。但它在运行时在IE中显示“NaN”,在Chrome上运行良好。

这是我的示例代码,

       var date = 2019 + '-' + 2 + '-' + 29;
       Date.parse(date)

当我尝试直接使用Date时。解析(2019-2-29)其工作。

共有2个答案

璩无尘
2023-03-14

您应该提供格式正确的日期

日期。parse()方法解析日期的字符串表示形式,如果字符串无法识别或在某些情况下包含非法的日期值(例如2015-02-31),则返回自1970年1月1日、00:00:00 UTC或NaN以来的毫秒数。

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

例如“1995年12月4日00:12:00 GMT”

周博达
2023-03-14

您不应该在ES5环境中使用Date.parse,因为它可能无法正常工作。但是,下面是一个示例,向您展示如何解决它(没有经过彻底测试,您可能需要调整它)。

var date = '2019-02-28T14:05:23';

function isoToMS (iso) {
  var r = null;
  if (Date.parse) {
    r = Date.parse(iso);
  }
  if (!r || !Number.prototype.isPrototypeOf(r)) {
    r = iso.split(/[\-T:]/g).reduce(function (d, partial, i) {
      if (i < 1) { d.setFullYear(Number(partial)); }
      else if (i < 2) { d.setMonth(Number(partial) - 1); }
      else if (i < 3) { d.setDate(Number(partial)); }
      else if (i < 4) { d.setHours(Number(partial)); }
      else if (i < 5) { d.setMinutes(Number(partial)); }
      else if (i < 6) { d.setSeconds(Number(partial)); }
      return d;
    }, new Date());

    if (!/T\d+/g.test(iso)) {
      // note: Date.parse converts ISO without time information to UTC
      r.setMinutes(r.getMinutes() + r.getTimezoneOffset());
    }
  }
  return +r;
}

console.log(isoToMS(date));
 类似资料:
  • 我有一个带有字符串的数组列表,我想在日期中转换它。在下面的代码中,似乎不能使用“parse”来完成此操作: 但那不起作用。 你能帮帮我吗?

  • 嗨,我正在尝试以YYYY-MM-DD格式解析日期。我正在尝试这个: 但是我得到了错误,我想这是一个解析错误, 0001-01-01 00:00:00 0000 UTC解析时间“2016-01-1”为“2020-12-30”:无法将“-01-01”解析为“0” 我该如何解析它,或者通过其他示例给出一些提示?蒂亚。

  • 我有一个需求,当我把日期从一种格式转换成另一种格式时,我可能会得到一个无法解析的日期异常。下面粘贴了该类的代码

  • 我在用Java中的类解析日期格式时遇到了一些问题。 那么,对于这种日期格式类型()是否有任何日期格式化程序?

  • 我装了这个 测试并返回true: 我发现SimpleDateFormat将日期转换为2021的3月1日,尽管2021的2月不是29日。如果我在2021-02-30中通过,这是无效的,但它返回正确的结果。

  • 我有格式为“2020/02/25 23:58:08”的日期字符串。我想把它解析为‘2020-02-25’。 注意:最初的日期是字符串格式,转换后无论是日期格式还是字符串格式都无关紧要。 文件js公司 当我运行这个程序时,我得到了未捕获的引用错误:gi未定义,gi是全局替换