Javascript日期格式" dd-MMM-yyyy"不在IE工作

时间:2018-05-03 06:27:27

标签: javascript angular date internet-explorer

从服务器端获取数据时,我的日期格式为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

3 个答案:

答案 0 :(得分:1)

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

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 :(得分:-1)

1)我认为你所谈论的格式是dd-MM-yyyy,而不是dd-MMM-yyyy,对吧?

2)如果是,那么您应该理解Date对象,将其解析为MM-dd-yyyy

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

答案 2 :(得分:-1)

IE不支持“dd-MMM-yyyy”格式。

  

并使用“dd-MM-yyyy”

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