无法在Firefox中解析可以在Chrome中解析的日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Firefox中解析可以在Chrome中解析的日期相关的知识,希望对你有一定的参考价值。

我有一组日期,如June 2017October 2016等等。

在Firefox中,执行new Date('June 2017')会触发Invalid Date错误。这同样适用于Chrome。

我尝试使用Moment.js但结果是一样的。

我怎样才能让它正常工作?

这是一个快速测试的Pen,和片段一样(检查浏览器控制台):

var date = 'June 2017';
var formatDate = new Date(date);

console.log(formatDate);
答案

浏览器之间确实存在差异。根据MDN

注意:由于浏览器差异和不一致性,强烈建议不要使用Date构造函数(和Date.parse,它们是等效的)解析日期字符串。对RFC 2822格式字符串的支持仅限于惯例。对ISO 8601格式的支持不同之处在于仅日期字符串(例如“1970-01-01”)被视为UTC,而不是本地字符串。

如果您的字符串始终采用Month Year格式,您可以考虑按如下方式解析它。

function parseDateString(str) {
  let months = ['January', 'February', 'March',
        'April', 'May', 'June', 'July', 'August',
        'September', 'October', 'November', 'December'];
  let split = str.split(/s+/);
  return new Date(Date.UTC(parseInt(split[1], 10), months.indexOf(split[0])));
}

function test(str) {
  console.log(`"${str}" is parsed as`, parseDateString(str));
}

test('June 2017');
test('October 2016');
test('March 2018');

以上是关于无法在Firefox中解析可以在Chrome中解析的日期的主要内容,如果未能解决你的问题,请参考以下文章

Chrome无法解析Vagrant / VirtualBox主机?

XML 解析错误:在 FireFox 中格式不正确,但在 Chrome 中格式良好

1.Google Chrome浏览器 控制台全解析

Edge 无法解析 AMS v3 生成的 VTT 文件

各种浏览器的Hack写法(chrome firefox ie等)

Bootstrap modal 可在 Firefox 中使用,但不能在 Chrome 中使用