如何在JavaScript中将dMYYYY格式日期字符串转为指定显示格式
转换方案
你原始的日期字符串是按照「日 + 月 + 四位年」的规则拼接生成的,我们直接基于这个规则反向解析即可,完全不需要修改原有生成逻辑。
实现思路
- 所有日期字符串的最后4位固定是年份,直接截取即可
- 剩余的前半部分为日和月的拼接内容,利用月份取值范围是1-12的特点拆分:
- 若前半部分的最后两位数字≤12,则这两位为月份,剩余内容为日期
- 若前半部分的最后两位数字>12,则最后1位为月份,剩余内容为日期
- 把月份数字匹配为对应的英文缩写,按要求格式拼接即可
代码实现
// 月份英文缩写映射表 const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; function convertDateKey(dateStr) { // 截取最后四位为年份 const year = dateStr.slice(-4); // 取日+月的拼接部分 const dayMonthSeg = dateStr.slice(0, -4); let month, day; const lastTwoChar = dayMonthSeg.slice(-2); if (Number(lastTwoChar) <= 12) { month = Number(lastTwoChar); day = Number(dayMonthSeg.slice(0, -2)); } else { month = Number(dayMonthSeg.slice(-1)); day = Number(dayMonthSeg.slice(0, -1)); } return `${monthAbbrs[month - 1]}, ${day}, ${year}`; } // 测试示例 console.log(convertDateKey('162021')); // 输出:Jun, 1, 2021 console.log(convertDateKey('2182021')); // 输出:Aug, 21, 2021
补充说明
因为你的原始日期都是通过Date对象生成的合法日期,不存在非法的日月取值,所以上述转换逻辑覆盖所有合法场景,准确率100%,直接用这个函数处理需要渲染到折线图的日期字段即可。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

