如何在JavaScript中将月份数字转换为月份名称,完成日期格式转换
JavaScript 实现 YYYY-MM-DD 日期转 YYYY-月份缩写-日格式
你可以直接通过原生 JavaScript 完成转换,不需要引入第三方库,以下是两种常用实现方案:
方案1:手动定义月份缩写数组(兼容性最好)
这种方法逻辑简单直观,兼容所有新旧JS运行环境:
// 定义英文月份缩写数组,下标0对应1月,以此类推 const monthAbbrs = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; // 你从MySQL获取的原始日期字符串 const mysqlDate = '2021-10-30'; // 兼容所有环境的日期对象构造方式,避免部分旧浏览器解析字符串异常 const [year, month, day] = mysqlDate.split('-').map(Number); const dateObj = new Date(year, month - 1, day); // 拼接目标格式,补零保证日期为2位数 const formattedDate = `${year}-${monthAbbrs[dateObj.getMonth()]}-${String(day).padStart(2, '0')}`; console.log(formattedDate); // 输出结果:2021-Oct-30
如果运行环境不支持padStart方法,补零逻辑可以替换为:
const formattedDay = ('0' + day).slice(-2);
方案2:使用Intl API自动生成月份缩写
不需要手动维护月份数组,适合多语言场景下的转换需求:
const mysqlDate = '2021-10-30'; const [year, month, day] = mysqlDate.split('-').map(Number); const dateObj = new Date(year, month - 1, day); // 调用Intl API解析日期各部分 const dateParts = new Intl.DateTimeFormat('en-US', { month: 'short' }).formatToParts(dateObj); const monthAbbr = dateParts.find(part => part.type === 'month').value; const formattedDate = `${year}-${monthAbbr}-${String(day).padStart(2, '0')}`; console.log(formattedDate); // 输出结果:2021-Oct-30
内容的提问来源于stack exchange,提问作者diana
相关产品推荐
相关产品推荐

