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

JavaScript数字转月份名称:forEach循环数据转换问题

解决JavaScript中月份数字转名称的问题

这问题其实很常见,给你两个实用的解决方案,看你的需求场景来选:

方案1:手动定义月份名称数组(简单直接)

如果你只需要固定的中文月份名称,手动创建对应数组是最直接的方式——不用依赖API,性能也高:

// 定义月份名称数组,索引1对应一月,索引12对应十二月
const monthNames = ['', '一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'];

const months = [];
const revenue = [];
const label = [ {month: 9, revenue: 400}, {month: 11, revenue: 500}, {month: 12, revenue: 600} ];

label.forEach(function(value){
  // 用数组索引获取对应月份名称
  months.push(monthNames[value['month']]);
  revenue.push(value['revenue']);
});

console.log(months); // 输出: ["九月", "十一月", "十二月"]

方案2:使用Intl.DateTimeFormat(本地化友好)

如果需要支持多语言(比如切换英文、繁体),或者不想手动维护数组,推荐用浏览器内置的Intl.DateTimeFormatAPI,它能自动生成符合本地化规则的月份名称:

// 封装一个获取月份名称的函数
function getLocalizedMonthName(monthNumber, locale = 'zh-CN') {
  // Date对象的月份是0-11,所以要把传入的1-12转成0-11
  const date = new Date();
  date.setMonth(monthNumber - 1);
  // 配置参数:month: 'long'表示全称,'short'是缩写(比如"九月"→"九")
  return new Intl.DateTimeFormat(locale, { month: 'long' }).format(date);
}

const months = [];
const revenue = [];
const label = [ {month: 9, revenue: 400}, {month: 11, revenue: 500}, {month: 12, revenue: 600} ];

label.forEach(function(value){
  // 调用函数获取月份名称
  months.push(getLocalizedMonthName(value['month']));
  revenue.push(value['revenue']);
});

console.log(months); // 输出: ["九月", "十一月", "十二月"]
// 如果需要英文,只需要传第二个参数:getLocalizedMonthName(value['month'], 'en-US')
// 会输出: ["September", "November", "December"]

小提示

  • 方案1里的数组也可以调整成索引0对应一月,这时取值要改成monthNames[value['month'] - 1],看你个人习惯就好
  • 方案2一定要注意Date对象的月份是0起始的,必须把传入的数字减1,否则会拿到错误的月份名称(比如传入9会得到十月)

内容的提问来源于stack exchange,提问作者peaceduck

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:56:12