我在从服务器端获取数据时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
一样解析它。
因此,您应该更改格式,或者将收到的字符串中的天数替换为月份。