从moment.js获取年份的所有月份名称

时间:2015-03-27 14:31:53

标签: javascript momentjs

我希望从一年中获得所有月份名称.js

如果年份为2011,那么我希望所有月份都在momentjs中命名

我已尝试过以下代码,但它对我不起作用。

var xxx = moment().months(2011);

显示结果

enter image description here

我也尝试了xxx.months(),但返回的结果是7

但我想要jan,feb,mar,......dec嗯我该怎么办?

9 个答案:

答案 0 :(得分:46)

恰好有一个功能:

moment.monthsShort()
// ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]

或使用手动格式化相同:

Array.apply(0, Array(12)).map(function(_,i){return moment().month(i).format('MMM')})

我想您希望使用Moment.js语言环境数据显示所有名称,这是一种合理的方法。

答案 1 :(得分:29)

使用moment.js您有以下方法:

moment.month() // long names

返回:

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

moment.monthsShort() // short names

返回:

["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

答案 2 :(得分:6)

  

如果年份是2011年,那么我想在所有月份中命名为momentjs

为什么年份很重要?月份名称不会改变。

你可以从Moment获得月份名称:

var m = moment();
for (var i = 0; i < 12; i++) {
 console.log(m.months(i).format('MMMM'));
}

答案 3 :(得分:5)

/**
 * Returns an array of all month names for a given language
 * in the specified format.
 *
 * @param lang {string} Language code
 * @param frmt {string} Possible values: {'M','MM','MMM','MMMM'}
 * @return the array of month names
 */
function getMonthNames(lang, frmt) {
  var userLang = moment.lang();            // Save user language
  moment.lang(lang);                       // Switch to specified language
  var months = [];                         // Months array
  var m = moment("2011");                  // Create a moment in 2011
  for (var i = 0; i < 12; i++)             // Loop from 0 to 12 (exclusive)
    months.push(m.months(i).format(frmt)); // Append the formatted month
  moment.lang(userLang);                   // Restore user language
  return months;                           // Return the array of months
}

function println(text) {
  text = arguments.length > 1 ? [].join.call(arguments, ' ') : text;
  document.getElementById('disp').innerHTML += text + '\n';
}

println('English:', getMonthNames('en-US', 'MMM'));
println('Bengali:', getMonthNames('bn', 'MMM'));
println('Español:', getMonthNames('es', 'MMM'));
#disp {
  white-space: pre;
  font-family: monospace;
}
<!-- http://cdnjs.com/libraries/moment.js/ -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment-with-locales.min.js"></script>

<div id="disp"></div>

输出

English: Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
Bengali: জানু,ফেব,মার্চ,এপর,মে,জুন,জুল,অগ,সেপ্ট,অক্টো,নভ,ডিসেম্
Español: ene.,feb.,mar.,abr.,may.,jun.,jul.,ago.,sep.,oct.,nov.,dic.

答案 4 :(得分:2)

您可以使用以下功能获取工作日和月份列表以进行列表 -

var iIndex, 
sArrMonths, sMonth;
for(iIndex = 0; iIndex < 12; iIndex++)
{
    sMonth = moment.localeData().months(moment([0,iIndex]), "");
    sArrMonths.push(sMonth);
}

您可以在此处查看实时示例 - Localized Month and Weekdays List

答案 5 :(得分:1)

您将不得不从阵列访问月份:

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

var monthInt = new Date().getMonth();
var monthString = months[monthInt];

答案 6 :(得分:0)

我需要一个带有月份数和月份名称的数组,以便在ng-optiosn中显示它们,所以我扩展了一点Klaster_1的解决方案。

Array.apply(0, Array(12)).map(
                    function(_,i){
                          var elem    ={};
                          elem.id     = parseInt(i+1);
                          elem.name   = moment().month(i).format('MMM'); 
                          return elem;
                    }
              )

答案 7 :(得分:0)

现在是2019年,您不应该再使用moment.js,因为香草Date()类拥有我们需要的一切。除了这一点功能。

这是我使用的:months NPM module的所有月份都使用不同的语言。压缩后大约有991个字节。

使用正确的import语法的示例:

import months from 'months'

console.log(months.de)

结果:

[
  "Januar",
  "Februar",
  "März",
  "April",
  "Mai",
  "Juni",
  "Juli",
  "August",
  "September",
  "Oktober",
  "November",
  "Dezember"
]

答案 8 :(得分:0)

如果要在React中的选择中列出月份名称:

  <select
    value={value}
    onChange={handleChange}>

         {moment.months().map(item => (
            <option key={item}>{item}</option>
         ))}

  </select>