Javascript 日期格式"dd-MMM-yyyy"在 IE 中不起作用



我在从服务器端获取数据时dd-MMM-yyyy日期格式。 我正在对它进行一些验证,例如

if (new Date("02-MAY-2018").toDateString() == new Date(this.dob).toDateString()) {
alert("No error");
}
else {
alert("error");
}   

在这里new Date("02-MAY-2018").toDateString()此转换适用于 chrome,但不适用于 IE

如果您知道您获得的日期字符串的模式不会改变,那么您可以编写自己的解析器。这应该适用于所有浏览器。

const date = "02-MAY-2018";
const parseDate = dateStr => {
const parts = dateStr.split('-');
const months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'];
const day = Number(parts[0]);
const month = Number(months.indexOf(parts[1].toLowerCase()));
const year = Number(parts[2]);
return new Date(year, month, day);
}
console.log(parseDate(date).toDateString());

它有点冗长,但它可以完成工作。

然后你可以像这样简单地更改你的代码:

if (parseDate("02-MAY-2018").toDateString() == new Date(this.dob).toDateString()) {
alert("No error");
} else {
alert("error");
} 

请注意,您可能需要更改比较的右侧 -new Date(this.dob)更改为parseDate(this.dob)

,具体取决于this.dob的结构

1(我认为你说的格式是dd-MM-yyyy,而不是dd-MMM-yyyy,对吧?

2(如果是,那么您应该了解Date对象,像MM-dd-yyyy一样解析它。

因此,您应该更改格式,或者将收到的字符串中的天数替换为月份。

最新更新