JavaScript将Contract_End_Date格式化为YYYY-MM-DD格式的解决方案
问题排查
你的代码未得到预期结果的核心原因是:多了不必要的按空格拆分判断逻辑。你给出的输入示例2020-1-1、2020-1-11本身不包含空格,调用split(" ")后得到的数组长度为1,不会进入arr.length == 2的分支,后续的日期补零格式化逻辑完全没有执行。
修正后的代码
删除多余的空格拆分判断逻辑即可正常运行:
var updates = {}; var removes = {}; let Contract_End_Date = '2020-1-11'; if (typeof Contract_End_Date !== 'undefined' && Contract_End_Date != null) { var dateParts = Contract_End_Date.split("-"); if (dateParts.length == 3) { var day = parseInt(dateParts[2]); day = day < 10 ? "0" + day : day; var month = parseInt(dateParts[1]); month = month < 10 ? "0" + month : month; var year = dateParts[0]; updates["Contract_End_Date"] = `${year}-${month}-${day}`; } } console.log(updates); // 输出 { Contract_End_Date: '2020-01-11' }
更简洁的实现方案
可以直接用字符串padStart方法简化补零逻辑,代码可读性更高:
const formatContractDate = (dateStr) => { const [year, month, day] = dateStr.split('-').map(Number); return `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`; } // 测试效果 console.log(formatContractDate('2020-1-1')); // 输出 2020-01-01 console.log(formatContractDate('2020-1-11')); // 输出 2020-01-11
内容的提问来源于stack exchange,提问作者GeorGe Chanturia
相关产品推荐
相关产品推荐

