web-dev-qa-db-fra.com

Obtenez tous les mois le nom de l'année dans moment.js

Je veux obtenir tous les mois le nom de l'année dans moment.js 

si l'année est 2011, alors je veux que tous les mois se nomment dans momentjs 

j'ai essayé ce code ci-dessous, mais cela ne fonctionne pas pour moi.

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

Afficher le résultat est 

enter image description here

j'ai aussi essayé xxx.months(), mais le résultat obtenu est 7 

mais je veux jan,feb,mar,......dec. hmm Que puis-je faire?  

19
Ramesh Rajendran

Il se trouve qu'il existe une fonction pour cela:

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

Ou le même en utilisant le formatage manuel:

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

Je suppose que vous souhaitez afficher tous les noms en utilisant les données de paramètres régionaux Moment.js, ce qui est une approche raisonnable.

46
Klaster_1

En utilisant moment.js, vous avez les méthodes suivantes:

moment.month() // long names

résultats:

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

et

moment.monthsShort() // short names

résultats:

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

si l'année est 2011, alors je veux tous les mois nommer dans momentjs

Pourquoi l'année compte-t-elle? Les noms de mois ne changent pas.

Vous pouvez obtenir les noms de mois de Moment comme ceci:

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

/**
 * 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>

Sortie

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.
5
Mr. Polywhirl

Vous pouvez utiliser la fonction suivante pour obtenir une liste des jours de la semaine et des mois à des fins de référencement -

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

Vous pouvez consulter les exemples en direct ici - Liste mensuelle et hebdomadaire localisée

2
Neha

Vous allez devoir accéder aux mois depuis un tableau:

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

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

J'avais besoin d'un tableau avec le nombre et le nom des mois pour les afficher dans ng-optiosn, j'ai donc étendu un peu la solution de 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;
                    }
              )
0