Intl.DateTimeFormat一次返回错误的月份名称

时间:2019-10-30 12:45:46

标签: javascript

https://jsfiddle.net/prd9Lz18/11

3月返回两次。有人知道为什么吗?我现在正在使用其他解决方案(带有月名称的数组),但是我很好奇为什么会这样,而且我觉得这还没有结束。

let date = new Date();
let month = date.getMonth();
let options = { month: "long" };

for (let i = 0; i < 12; i++) {
  if (month === 12) {
    month = 0;
  }
  date.setMonth(month);
  let monthName = new Intl.DateTimeFormat("en-US", options).format(date);
  console.log((month + 1) + " " + monthName);
  month++;
}

1 个答案:

答案 0 :(得分:1)

使用dayValue中的setMonth()选项(代表月中的某天)

  

dateObj.setMonth(monthValue[, dayValue])

let date = new Date();
let month = date.getMonth();
let options = { month: "long" };

for (let i = 0; i < 12; i++) {
  if (month === 12) {
    month = 0;
  }
  date.setMonth(month, 1); // dayValue - 1
  let monthName = new Intl.DateTimeFormat("en-US", options).format(date);
  console.log((month + 1) + " " + monthName);
  month++;
}