我正在尝试使用Date.Parse函数解析动态创建的日期格式。但是它在运行时在IE中显示“ NaN”,并且在Chrome上可以正常工作。
这是我的示例代码,
var date = 2019 + '-' + 2 + '-' + 29;
Date.parse(date)
当我尝试直接使用Date.Parse(2019-2-29)时,它的工作原理。
答案 0 :(得分:0)
您应该提供格式正确的日期
Date.parse()方法解析日期的字符串表示形式,然后 返回自UTC 1970年1月1日00:00:00以来的毫秒数 或NaN(如果字符串无法识别,或者在某些情况下包含 非法的日期值(例如2015-02-31)。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
例如'1995年12月4日00:12:00 GMT'
答案 1 :(得分:0)
您不应该在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));