You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:45:08