如何将月年格式转为mm/dd/yyyy格式(dd固定为每月1号)
两种日期格式转mm/dd/yyyy(固定日为1号)的实现方案
直接上可复用的函数实现,同时兼容数字月份+年份、英文月份+年份两种输入格式:
function convertToMMDDYYYY(inputDate) { // 拆分输入为月份段和年份 const [monthPart, year] = inputDate.trim().split(' '); let monthNum; // 处理数字月份 if (!isNaN(monthPart)) { monthNum = parseInt(monthPart, 10); } else { // 处理英文月份:通过Date对象解析 const tempDate = new Date(`${monthPart} 1, ${year}`); monthNum = tempDate.getMonth() + 1; // 转换为1-12的数字月份 } // 补零确保月份为两位,拼接固定日为01的目标格式 const formattedMonth = monthNum.toString().padStart(2, '0'); return `${formattedMonth}/01/${year}`; } // 测试验证 console.log(convertToMMDDYYYY("6 2023")); // 输出 "06/01/2023" console.log(convertToMMDDYYYY("June 2023")); // 输出 "06/01/2023" console.log(convertToMMDDYYYY("12 2024")); // 输出 "12/01/2024" console.log(convertToMMDDYYYY("January 2022")); // 输出 "01/01/2022"
关键逻辑说明
- 输入拆分:用
trim()处理输入可能的首尾空格,再按空格拆分为月份部分和年份 - 格式判断:通过
isNaN()区分数字月份和英文月份 - 英文月份解析:借助JS Date对象的自动解析能力,传入
"英文月份 1, 年份"即可获取对应月份的数字值(注意getMonth()返回0-11,需加1转为1-12) - 格式补全:用
padStart(2, '0')确保月份始终是两位数字,日固定为01,最后拼接成mm/dd/yyyy格式
额外说明
- 英文月份不区分大小写(比如
"june 2023"也能正常解析) - 假设输入的年份均为四位数字,若需兼容两位年份可额外添加补全逻辑
内容的提问来源于stack exchange,提问作者Smith Jonas
相关产品推荐
相关产品推荐

