如何在JavaScript中从这个日期对象生成月份的名称(例如:10月/ 10月)?

var objDate = new Date("10/11/2009");

当前回答

较短的版本:

const monthNames = ["January", "February", "March", "April", "May", "June", “七月”,“八月”,“九月”,“十月”,“十一月”,“十二月” ]; const d = new Date(); 文档。write("当前月份是" + monthNames[d.getMonth()]);

注(2019-03-08)-我最初在2009年写的这个答案已经过时了。请参阅David Storey的回答以获得更好的解决方案。

其他回答

我们不需要声明一个包含所有月份名称的数组,然后用一个索引来指向,我们也可以把它写成一个简短的版本,如下所示:

var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug

最简单最简单的方法:

const dateStr =新的日期(2020,03,10).toDateString();//“2020年4月10日星期五” const dateStrArr = dateStr。分割(' ');// ['Fri', 'Apr', '10', '2020'] console.log (dateStrArr [1]);/ / 4月的

将日期转换为字符串。 间隔一个空格。 从数组中选择第二个元素。

如果你赶时间……那就给你!

const date = new Date(Date.now());
date.toLocaleString('en-US', {month: 'short'}); // {month:'long'}

预期产出:“四月”

对我来说,这是最佳解,

对于TypeScript也一样

const env = process.env.REACT_APP_LOCALE || 'en';

const namedMonthsArray = (index?: number): string[] | string => {
  const months = [];

  for (let month = 0; month <= 11; month++) {
    months.push(
      new Date(new Date('1970-01-01').setMonth(month))
        .toLocaleString(env, {
          month: 'long',
        })
        .toString(),
    );
  }
  if (index) {
    return months[index];
  }
  return months;
};

输出是

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]

你可以使用或不使用当地语言翻译

创造价值“2009年10月11日”

const objDate =新日期("10/11/2009"); const月=[‘简’,2月,3月,4月,“可能”,“君”,7月,8月,9月,10月,11月,12月的) if (objDate !== '无效日期' && !isNaN(objDate)) { console.log(objDate.getDate() + ' ' + months[objDate.getMonth()] + ' ' + objDate.getFullYear())) }

ECMAScript国际化API将month转换为本地语言(例如:october 11)

const convertDate = new Date('10/11/2009') Const lang = 'fr' // de, es, ch if (convertDate !== '无效日期' && !isNaN(convertDate)) { console.log(convertDate. getdate () + ' ' + convertDate. log)toLocaleString(朗,{ 月:“长” })) }