Obtenir le nom du mois à partir de la Date

Comment puis-je générer le nom du mois (E. g: octobre / octobre) à partir de cette date objet en JavaScript?

var objDate = new Date("10/11/2009");
500
demandé sur John Slegers 2009-10-29 15:19:14

30 réponses

version courte:

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

const d = new Date();
document.write("The current month is " + monthNames[d.getMonth()]);
891
répondu Jesper 2018-03-26 15:33:15

il est maintenant possible de le faire avec L'API D'internationalisation D'ECMAScript:

var date = new Date("10/11/2009"),
    locale = "en-us",
    month = date.toLocaleString(locale, { month: "long" });

http://jsfiddle.net/dstorey/Xgerq /

"long" utilise le nom complet du mois, "court" pour le nom court, et "étroit" pour une version minimale, comme la première lettre alphabétique des langues.

vous pouvez changer la locale à tout ce que vous voulez, et il utilisera le bon nom pour cela langue/pays.

avec toLocaleString vous devez passer dans la locale et les options à chaque fois. Si vous allez utiliser les mêmes informations locales et options de formatage à plusieurs dates différentes, vous pouvez utiliser Intl.DateTimeFormat à la place:

var formatter = new Intl.DateTimeFormat("fr", { month: "short" }),
month1 = formatter.format(new Date()),
month2 = formatter.format(new Date(2003-05-12));

// sept. and déc.
console.log(month1 + " and " + month2);

le principal problème avec cette API est qu'elle est nouvelle. Il est seulement disponible dans les navigateurs Blink (Chrome et Opera), IE11, Microsoft Edge, Firefox 29+, et Safari 10 +

pour plus d'information voir mon billet de blog sur le API D'internationalisation .

396
répondu David Storey 2018-06-09 18:58:48

En voici un autre, avec support pour la localisation :)

Date.prototype.getMonthName = function(lang) {
    lang = lang && (lang in Date.locale) ? lang : 'en';
    return Date.locale[lang].month_names[this.getMonth()];
};

Date.prototype.getMonthNameShort = function(lang) {
    lang = lang && (lang in Date.locale) ? lang : 'en';
    return Date.locale[lang].month_names_short[this.getMonth()];
};

Date.locale = {
    en: {
       month_names: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
       month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    }
};

vous pouvez alors facilement ajouter le support pour d'autres langues:

Date.locale.fr = {month_names: [...]};
154
répondu krcko 2013-09-06 01:15:54

si cela ne vous dérange pas de prolonger la date du prototype (et il y a de bonnes raisons de ne pas vouloir le faire), vous pouvez en fait venir avec une méthode très facile:

Date.prototype.monthNames = [
    "January", "February", "March",
    "April", "May", "June",
    "July", "August", "September",
    "October", "November", "December"
];

Date.prototype.getMonthName = function() {
    return this.monthNames[this.getMonth()];
};
Date.prototype.getShortMonthName = function () {
    return this.getMonthName().substr(0, 3);
};

// usage:
var d = new Date();
alert(d.getMonthName());      // "October"
alert(d.getShortMonthName()); // "Oct"

ces fonctions s'appliqueront alors aux objets de Date tous javascript.

60
répondu nickf 2009-10-29 12:52:53

je recommande vivement la fonction format du moment .js bibliothèque, que vous pouvez utiliser comme ceci:

moment().format("MMM");  // "April" - current date
moment(new Date(2012, 01, 04)).format("MMM");  // "Feb" - from a local date
moment.utc(new Date(2012, 00, 04).format("MMM"); // "Jan" - from a UTC date

en plus d'une longue liste d'autres caractéristiques, il a fort soutien à l'internationalisation .

52
répondu Brian M. Hunt 2013-11-06 14:53:37

pour obtenir le mois courant sans entrer de date, utilisez ce code:

var dateToday = new Date();
var locale = "en-us";
var month = dateToday.toLocaleString(locale, {month: "long"});
alert(month);
47
répondu 1ben99 2018-02-27 01:47:24
Date.prototype.getMonthName = function() {
    var monthNames = [ "January", "February", "March", "April", "May", "June", 
                       "July", "August", "September", "October", "November", "December" ];
    return monthNames[this.getMonth()];
}

il peut être utilisé comme

var month_Name = new Date().getMonthName();
18
répondu Beena Shetty 2016-08-17 08:58:04

vous pouvez utiliser datejs pour faire cela. Vérifier le FormatSpecifiers , MMMM vous donne le nom du mois:

var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));

et datejs obtenu que localisé pour plus de 150 locales! voir ici

17
répondu Tim Büthe 2009-10-29 15:41:46

un processus facile commun à partir de l'objet date peut être fait par ceci.

var monthNames = ["January", "February", "March", "April", "May", "June",
  "July", "August", "September", "October", "November", "December"
];
var monthShortNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];

function dateFormat1(d){
  var t = new Date(d);
  return t.getDate()+' '+monthNames[t.getMonth()]+', '+t.getFullYear();
}

function dateFormat2(d){
  var t = new Date(d);
  return t.getDate()+' '+monthShortNames[t.getMonth()]+', '+t.getFullYear();
}

ou vous pouvez faire date prototype comme

Date.prototype.getMonthName = function() {
    var monthNames = [ "January", "February", "March", "April", "May", "June", 
                       "July", "August", "September", "October", "November", "December" ];
    return monthNames[this.getMonth()];
}


Date.prototype.getFormatDate = function() {
    var monthNames = [ "January", "February", "March", "April", "May", "June", 
                       "July", "August", "September", "October", "November", "December" ];
    return this.getDate()+' '+monthNames[this.getMonth()]+', '+this.getFullYear();
}

Ex:

var dateFormat3 = new Date().getMonthName(); # March

var dateFormat4 = new Date().getFormatDate(); # 16 March, 2017

12
répondu M A K Ripon 2017-03-16 05:43:52

, Essayez:

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

var strDate =
    objDate.toLocaleString("en", { day: "numeric" }) + ' ' +
    objDate.toLocaleString("en", { month: "long"  }) + ' ' +
    objDate.toLocaleString("en", { year: "numeric"});
10
répondu beneus 2016-11-18 13:07:46

le format naturel de nos jours est D'utiliser le Moment.js.

la façon d'obtenir le mois dans un format chaîne , est très simple dans le Moment.js pas besoin de coder les noms de mois dans votre code: Pour obtenir le mois et l'année en cours dans le format de nom de mois et l'année complète (mai 2015):

  moment(new Date).format("MMMM YYYY");
8
répondu shacharsol 2015-05-30 18:03:46

Voici une façon qui ne dépend pas d'un tableau codé dur et supporte plusieurs locales.

si vous avez besoin d'un tableau entier:

var monthsLocalizedArray = function(locale) {
    var result = [];
    for(var i = 0; i < 12; i++) {
        result.push(new Date(2010,i).toLocaleString(locale,{month:"long"}));
    }
    return result;
};

Utilisation:

console.log(monthsLocalizedArray('en')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
console.log(monthsLocalizedArray('bg')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"]

si vous n'avez besoin que d'un mois sélectionné (plus rapide):

var monthLocalizedString = function(month, locale) {
    return new Date(2010,month).toLocaleString(locale,{month:"long"});
};

Utilisation:

console.log(monthLocalizedString(1, 'en')); // -> February
console.log(monthLocalizedString(1, 'bg')); // -> февруари
console.log(monthLocalizedString(1, 'de')); // -> Februar

testé et fonctionne très bien sur Chrome et IE 11. Sur mozilla quelques modifications sont nécessaires, car il renvoie la date entière.

7
répondu Дамян Станчев 2014-02-13 08:26:30

au lieu de déclarer le tableau qui détient tout le nom du mois et pointant ensuite avec un index, nous pouvons aussi l'écrire dans une version plus courte comme ci-dessous:

var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug
6
répondu Anand kumar 2016-08-05 07:04:34

vous pouvez utiliser l'un des formateursde Date disponibles. Comme cette option est conforme à la spécification JavaScript, elle sera disponible en mode navigateur et en mode serveur.

objDate.toString().split(" ")[1]; // gives short name, unsure about locale 
objDate.toLocaleDateString.split(" ")[0]; // gives long name

p.ex.

js> objDate = new Date(new Date() - 9876543210)
Mon Feb 04 2013 12:37:09 GMT-0800 (PST)
js> objDate.toString().split(" ")[1]
Feb
js> objDate.toLocaleString().split(" ")[0]
February

il y a plus à https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

5
répondu Dinesh 2013-05-30 04:14:23

malheureusement la meilleure façon d'extraire le nom du mois est de la représentation UTCString:

Date.prototype.monthName = function() {
    return this.toUTCString().split(' ')[2]
};

d = new Date();
//=> Thu Mar 06 2014 23:05:21 GMT+0000 (GMT)

d.monthName();
//=> 'Mar'
5
répondu Aaron Cronin 2014-03-06 23:08:36

avec momentjs , il suffit d'utiliser le format notation.

const myDate = new Date()
const shortMonthName = moment(myDate).format('MMM') // Aug
const fullMonthName = moment(myDate).format('MMMM') // August
5
répondu lnmunhoz 2016-08-04 04:29:06

stocke les noms dans un tableau et cherche par l'index du mois.

var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";

document.write("The current month is " + month[d.getMonth()]);

méthode JavaScript getMonth ()

3
répondu rahul 2009-10-29 12:22:08

Ma meilleure Solution est la suivante:

       var dateValue = Date();
       var month = dateValue.substring(4,7);
       var date = dateValue.substring(8,10);
       var year = dateValue.substring(20,24);
       var finaldateString = date+"-"+month+"-"+year;
3
répondu user3920942 2014-08-08 05:25:10

il y a une date très utile ici: http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/methods/date.js?r=6305 Ceci étend la classe de Date intégrée avec des méthodes telles que getMonthName() etc..

2
répondu markd 2012-05-23 10:22:50

si vous utilisez jQuery, vous utilisez probablement aussi jQuery UI, ce qui signifie que vous pouvez utiliser $.datepicker.formatDate () .

$.datepicker.setDefaults( $.datepicker.regional[ "nl" ] );   // dutch
$.datepicker.formatDate( "dd MM yy", objDate );
2
répondu mhu 2013-05-24 09:54:11

si vous ne voulez pas utiliser une bibliothèque externe, ou stocker un tableau de noms de mois, ou si L'API D'internationalisation D'ECMAScript N'est pas assez bonne en raison de la compatibilité du navigateur, vous pouvez toujours le faire à l'ancienne en extrayant l'information de la sortie de date:

var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);

cela vous donnerait le nom abrégé du mois, par exemple Oct. Je crois que la date viendra dans toutes sortes de formats selon l'initialisation et votre locale alors jetez un oeil à ce que toDateString() retourne et recalculer vos valeurs substring() basé sur cela.

2
répondu Matt K 2014-05-28 22:25:54

si vous ne voulez pas utiliser moment et que vous voulez afficher le nom du mois -

.config($mdDateLocaleProvider) {
    $mdDateLocaleProvider.formatDate = function(date) {      
      if(date !== null) {
        if(date.getMonthName == undefined) {
          date.getMonthName = function() {
            var monthNames = [ "January", "February", "March", "April", "May", "June", 
            "July", "August", "September", "October", "November", "December" ];
            return monthNames[this.getMonth()];
          }
        }        
        var day = date.getDate();
        var monthIndex = date.getMonth();
        var year = date.getFullYear();
        return day + ' ' + date.getMonthName() + ' ' + year;
      }
    };
  }
2
répondu Kanchan 2016-11-15 10:36:27

cela peut aussi être fait si vous utilisez kendo.

kendo.toString(dateobject, "MMMM");

Voici la liste des formatteurs de kendo site :

" d " rend le jour du mois, de 1 à 31.

" dd " le jour du mois, du 01 au 31.

"ddd" Le nom abrégé du jour de la semaine.

"dddd" le nom complet du jour de la semaine.

"f" Les dixièmes de seconde à une valeur de date et heure.

"ff" Les centièmes de seconde à une valeur de date et heure.

"fff" Les millisecondes à une valeur de date et heure.

"M" Du mois, de 1 à 12.

"MM" Le mois, de 01 à 12.

" MMM " le nom abrégé du mois.

" MMMM " le nom complet du mois.

"h" à L'heure, à l'aide d'une horloge de 12 heures de 1 à 12.

"hh" L'heure, à l'aide d'une horloge de 12 heures à partir de 01 à 12.

"H" à L'heure, à l'aide d'une horloge de 24 heures de 1 à 23.

"HH" L'heure, à l'aide d'une horloge de 24 heures à partir de 01 à 23.

"m" à La minute, de 0 à 59.

" mm " le minute, de 00 à 59.

"s" à La deuxième, de 0 à 59.

"ss", La seconde, à partir de 00 à 59.

"tt" L'indicateur AM/PM.

"yy" Les deux derniers caractères de la valeur de l'année.

"aaaa" L'année pleine valeur.

" zzz " le fuseau horaire local lors de l'utilisation de formats pour analyser les chaînes de date UTC.

2
répondu Neel 2017-04-10 12:49:22
function getMonthName(month) 
{ 
return ["January","February","March","April","May","June","July","August","September", "October","November","December"][parseInt(month)-1]
}
2
répondu John Nikho 2017-07-20 13:37:56

j'ai une solution partielle que j'ai trouvé. Il utilise une expression régulière pour extraire le nom du mois et du jour. Mais en parcourant les options de région et de langue (fenêtres), je me rends compte que différentes cultures ont des formats différents... peut-être un meilleur modèle d'expression régulière pourrait être utile.

function testDateInfo() {
        var months = new Array();
        var days = new Array();
        var workingDate = new Date();
        workingDate.setHours(0, 0, 0, 0);
        workingDate.setDate(1);
        var RE = new RegExp("([a-z]+)","ig");
        //-- get day names 0-6
        for (var i = 0; i < 7; i++) {

            var day = workingDate.getDay();
            //-- will eventually be in order
            if (days[day] == undefined)
                days[day] = workingDate.toLocaleDateString().match(RE)[0];
            workingDate.setDate(workingDate.getDate() + 1);
        }
        //--get month names 0-11
        for (var i = 0; i < 12; i++) {
            workingDate.setMonth(i);
            months.push(workingDate.toLocaleDateString().match(RE)[1]);
        }
        alert(days.join(",") + " \n\r " + months.join(","));
    }
1
répondu Remus 2012-09-22 15:07:58

Juste s'étendant sur de nombreuses autres excellentes réponses - si vous utilisez jQuery, vous pourriez faire quelque chose comme

$.fn.getMonthName = function(date) {

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

    return monthNames[date.getMonth()];

};

date est égal à var d = new Date(somevalue) . Le principal avantage de ceci est que per @nickf a dit sur le fait d'éviter l'Espace-nom mondial.

1
répondu Tim 2013-03-09 06:36:18

utiliser ce Maté

function month(a){
var mNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
return mNames[a-1];
}
1
répondu Tegar Dazzly 2018-03-18 03:46:30

pour obtenir un tableau du nom de mois:

Date.monthNames = function( ) {
var arrMonth = [],
    dateRef = new Date(),
    year = dateRef.getFullYear();

dateRef.setMonth(0);
while (year == dateRef.getFullYear()) {
    /* push le mois en lettre et passe au mois suivant */
    arrMonth.push( (dateRef.toLocaleString().split(' '))[2] );
    dateRef.setMonth( dateRef.getMonth() + 1);
}

return arrMonth;
}

alert(Date.monthNames().toString());

// -> janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décembre

http://jsfiddle.net/polinux/qb346 /

0
répondu vava 2014-01-24 22:26:25

il suffit D'écrire une enveloppe simple autour de toLocaleString :

function LocalDate(locale) {
  this.locale = locale;
}

LocalDate.prototype.getMonthName = function(date) {
  return date.toLocaleString(this.locale,{month:"long"});
};

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

var localDate = new LocalDate("en");
console.log(localDate.getMonthName(objDate));

localDate.locale = "ru";
console.log(localDate.getMonthName(objDate));

localDate.locale = "zh";
console.log(localDate.getMonthName(objDate));
0
répondu John Slegers 2018-05-10 16:21:38

Un rapide hack que j'ai utilisé qui fonctionne bien:

const monthNumber = 8;
const yearNumber = 2018;
const date = `${['Jan', 'Feb', 'Mar', 'Apr',
  'May', 'Jun', 'Jul', 'Aug',
  'Sep', 'Oct', 'Nov', 'Dec'][monthNumber - 1]
      } ${yearNumber}`;

console.log(date);
0
répondu James Heazlewood 2018-08-09 05:33:07