You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

测试JSFiddle代码时IE 11显示无效日期,Chrome/Firefox显示正常求助

解决IE11中日期解析显示“无效日期”的问题

我太懂这种跨浏览器日期兼容性的坑了!IE11的Date对象对日期字符串的解析规则比Chrome、Firefox严格得多,你遇到的问题就是因为它不识别'07/15/2014 05:00:00.0'这种带.0后缀的时间格式。

问题重现的代码

var data = [ 
  { name: 'A', date: '07/15/2014 05:00:00.0',des:'This is for A' }, 
  { name: 'A', date: '08/16/2016 06:00:00.0',des:'This is for 2A' }, 
  { name: 'A', date: '07/15/2015 07:00:00.0',des:'This is for 3A' }, 
  { name: 'B', date: '07/15/2016 07:00:00.0',des:'This is for B' }, 
  { name: 'B', date: '08/16/2016 07:00:00.0',des:'This is for 2B' }
];
// 尝试在IE11中解析会得到Invalid Date
data.forEach(item => {
  console.log(new Date(item.date));
});

核心原因

现代浏览器(Chrome、Firefox)会自动忽略时间部分末尾多余的.0,但IE11会把这个后缀当成无效的时间格式,直接返回Invalid Date。这是因为早期ECMAScript标准没有统一日期字符串的解析规则,不同浏览器厂商实现差异很大。

几种可行的解决方案

方案1:移除时间末尾的.0后缀

用正则表达式把日期字符串里的.0去掉,转换成IE11能识别的格式:

data.forEach(item => {
  // 替换掉时间末尾的.0
  const compatibleDateStr = item.date.replace(/\.0$/, '');
  const validDate = new Date(compatibleDateStr);
  console.log(validDate); // 现在IE11能正常解析了
});

方案2:手动拆分日期时间并构造Date对象

如果担心还有其他格式兼容性问题,可以手动拆分年、月、日、时、分、秒,直接用Date的构造函数参数来创建:

function parseDate(dateStr) {
  // 拆分日期和时间部分
  const [datePart, timePart] = dateStr.split(' ');
  // 拆分月、日、年
  const [month, day, year] = datePart.split('/').map(Number);
  // 拆分时、分、秒(忽略.0)
  const [hours, minutes, seconds] = timePart.split(':').map(part => Number(part.split('.')[0]));
  // 注意:Date构造函数的月份是0-11,所以要减1
  return new Date(year, month - 1, day, hours, minutes, seconds);
}

data.forEach(item => {
  const validDate = parseDate(item.date);
  console.log(validDate);
});

方案3:使用日期处理库(如Moment.js)

如果你的项目已经在使用日期库,直接用库的解析方法会更省心,比如Moment.js:

data.forEach(item => {
  const validDate = moment(item.date, 'MM/DD/YYYY HH:mm:ss.S').toDate();
  console.log(validDate);
});

(不过如果只是解决这一个问题,前面两种原生方案更轻量,不需要引入额外库)

验证建议

修改后可以直接在IE11的开发者工具控制台里测试,确认每个日期都能正常显示为有效的Date对象,而不是Invalid Date。

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:12:32