如何在JavaScript中将"dd/mm/yyyy"格式日期转换为ISO字符串
解决DD/MM/YYYY格式日期转ISO字符串的问题
首先,你的代码逻辑本身是正确的,但得到错误输出大概率是运行时变量值不符合预期(比如dateStr被意外修改,或者parts数组被其他代码篡改)。先确认正确的实现方式:
正确代码示例
const dateStr = "29/12/2022"; const [day, month, year] = dateStr.split("/"); // JavaScript的Date构造函数中月份是0-11范围,所以要减1 const myDate = new Date(year, month - 1, day); console.log(myDate.toISOString()); // 输出示例(取决于本地时区):2022-12-28T16:00:00.000Z 或 2022-12-29T00:00:00.000Z
为什么你的输出不对?
你给出的错误输出2024-05-11T22:00:00.000Z对应的是new Date(2024,4,12)(月份减1后为4,对应5月),这说明运行代码时:
parts[2]的值是2024(而非预期的2022)parts[1]的值是5(而非预期的12)parts[0]的值是12(而非预期的29)
请检查运行时dateStr和parts变量的实际值,确认未被其他代码修改。
额外注意事项
toISOString()会将日期转换为UTC时区的字符串,若本地时区不是UTC,输出的日期时间会和本地时间有偏移。如果需要基于本地时区生成固定格式的ISO字符串(不带时区偏移),可以手动拼接:const formatted = `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}T00:00:00.000Z`; console.log(formatted); // 2022-12-29T00:00:00.000Z
内容的提问来源于stack exchange,提问作者makaMa
相关产品推荐
相关产品推荐

