无法在Firefox中解析可以在Chrome中解析的日期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法在Firefox中解析可以在Chrome中解析的日期相关的知识,希望对你有一定的参考价值。
我有一组日期,如June 2017
,October 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 中格式良好