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
相关产品推荐
相关产品推荐

