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

向new Date()构造函数传入日期字符串为何返回Invalid Date,如何解决?

解决new Date(DD/MM/YYYY格式字符串)返回Invalid Date的问题

报错的核心原因是:JavaScript的Date构造函数默认不支持DD/MM/YYYY(日/月/年)的欧式日期格式解析,默认可识别的短日期格式为美式MM/DD/YYYY(月/日/年),你传入的18/11/2021会被识别为「第18个月的11日」,月份超出1-12的范围自然返回无效日期,确实需要先对原字符串做格式处理。

两种常用处理方案如下:

  • 方案1:拆分后使用多参数构造函数(最推荐,无兼容性和时区坑)
    Date构造函数支持按new Date(年, 月, 日)的格式传参,注意月份参数从0开始计数(0代表1月,11代表12月),示例代码:
var dateString = '18/11/2021';
// 拆分日期字符串并转为数字
const [day, month, year] = dateString.split('/').map(Number);
// 月份减1适配0起始的计数规则
const dateObject = new Date(year, month - 1, day);
alert(dateObject);
  • 方案2:转换为ISO标准日期格式后传入
    也可以把原字符串转换为YYYY-MM-DD的ISO标准格式后再传入构造函数,注意该方式部分浏览器会将字符串解析为UTC时间,可能存在时区偏差导致日期差1天的问题:
var dateString = '18/11/2021';
const [day, month, year] = dateString.split('/');
const dateObject = new Date(`${year}-${month}-${day}`);
alert(dateObject);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 23:39:01