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

JavaScript中Date及Day.js转换日期字符串失败问题求助

问题原因

原生Date构造函数以及默认配置的Day.js,都会把DD-MM-YYYY格式的字符串误判为MM-DD-YYYY。当日期中的"月份"部分(比如你的结束日期里的15)超过12时,就会返回Invalid Date。

解决方案

方案1:手动拆分字符串构造Date对象

直接拆分日期字符串的日、月、年,按年, 月-1, 日的顺序传入Date构造函数(注意月份是从0开始计数的):

let date = {
  end: "15-10-2022",
  start: "05-10-2022",
};

function parseDMY(dateStr) {
  const [day, month, year] = dateStr.split("-");
  // 月份要减1,因为Date的月份是0-11
  return new Date(year, month - 1, day);
}

let range = {
  start: parseDMY(date.start),
  end: parseDMY(date.end),
};

console.log(range);

方案2:用Day.js指定格式解析

Day.js需要显式指定解析格式才能正确识别DD-MM-YYYY,记得先引入Day.js的customParseFormat插件:

// 先确保引入了Day.js和customParseFormat插件
import dayjs from 'dayjs';
import customParseFormat from 'dayjs/plugin/customParseFormat';

dayjs.extend(customParseFormat);

let date = {
  end: "15-10-2022",
  start: "05-10-2022",
};

let range = {
  start: dayjs(date.start, "DD-MM-YYYY").toDate(),
  end: dayjs(date.end, "DD-MM-YYYY").toDate(),
};

console.log(range);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:25:57