Question

Comment puis-je générer le nom du mois (par exemple: oct / octobre) à partir de cet objet date en JavaScript?

var objDate = new Date("10/11/2009");
Était-ce utile?

La solution

Version plus 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()]);

Remarque (2019-03-08) - La réponse de moi que j'avais écrite en 2009 était obsolète. Voir la réponse de David Storey pour une meilleure solution.

Autres conseils

Il est maintenant possible de le faire avec l'API d'internationalisation ECMAScript:

const date = new Date(2009, 10, 10);  // 2009-11-10
const month = date.toLocaleString('default', { month: 'long' });
console.log(month);

'long' utilise le nom complet du mois, 'short' pour le nom abrégé et 'étroit' pour plus de version minimale, telle que la première lettre dans les langues alphabétiques.

Vous pouvez modifier les paramètres régionaux du 'défaut' du navigateur en choisissant ceux qui vous plaisent (par exemple, 'en-us' ), et le nom qui convient pour cela langue / pays.

Avec toLocaleString api , vous devez indiquer les paramètres régionaux et les options à chaque fois. Si vous allez utiliser les mêmes informations de localisation et les mêmes options de formatage à plusieurs dates différentes, vous pouvez utiliser Intl.DateTimeFormat à la place:

const formatter = new Intl.DateTimeFormat('fr', { month: 'short' });
const month1 = formatter.format(new Date());
const month2 = formatter.format(new Date(2003, 5, 12));
console.log(`${month1} and ${month2}`); // current month in French and "juin".

Pour plus d'informations, consultez l'article de mon blog sur la API d'internationalisation .

En voici un autre, avec prise en charge de 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 ensuite ajouter facilement le support pour d'autres langues:

Date.locale.fr = {month_names: [...]};

Si l'extension du prototype de Date ne vous dérange pas (et qu'il existe de bonnes raisons de ne pas le faire), vous pouvez en fait proposer une méthode très simple:

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 à tous les objets Date javascript.

Je recommande vivement la fonction format de , la bibliothèque moment.js , que vous pouvez utiliser comme suit:

moment().format("MMM");  // "Apr" - 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

Utilisez " MMMM " au lieu de " MMM " si vous avez besoin du nom complet du mois

Outre une longue liste d'autres fonctionnalités, il bénéficie du prise en charge de l'internationalisation . .

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();

Vous pouvez utiliser datejs pour le faire. Consultez les FormatSpecifiers . MMMM vous donne le nom du mois:

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

Et datejs l’a localisée pour plus de 150 lieux! voir ici

Ceci permet de traiter facilement certains processus simples à partir d'objet date.

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();
}

console.log(dateFormat1(new Date()))
console.log(dateFormat2(new Date()))

Ou vous pouvez créer un prototype de date 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();
}


console.log(new Date().getMonthName())
console.log(new Date().getFormatDate())

Ex:

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

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

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"});

Voici un moyen qui ne dépend pas d'un tableau codé en dur et prend en charge plusieurs paramètres régionaux.

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 correctement sous Chrome et IE 11. Sous Mozilla, certaines modifications sont nécessaires, car la date entière est renvoyée.

Malheureusement, le meilleur moyen d'extraire le nom du mois est d'utiliser 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'

Le format naturel de nos jours est d'utiliser Moment.js.

La façon d'obtenir le mois au format chaîne est très simple dans Moment.js, inutile de coder en dur 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");

Au lieu de déclarer un tableau contenant tout le nom du mois, puis de le pointer avec un index, nous pouvons également 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

Vous pouvez utiliser l’un des formats de formatage Date disponibles. Comme cela relève de la spécification JavaScript, il sera disponible en mode navigateur et côté serveur.

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

par exemple

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 en a d'autres sur https: // developer. mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Avec momentjs , il suffit d'utiliser le format .

const myDate = new Date()
const shortMonthName = moment(myDate).format('MMM') // Aug
const fullMonthName = moment(myDate).format('MMMM') // August

Stockez les noms dans un tableau et recherchez-les en fonction de 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 ()

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 );

Si vous ne souhaitez pas utiliser de bibliothèque externe, ni stocker un tableau de noms de mois, ou si l'API d'internationalisation ECMAScript n'est pas suffisante en raison de la compatibilité du navigateur, vous pouvez toujours le faire à l'ancienne en extrayant le fichier. info 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 pense que la date prendra toutes sortes de formats, en fonction de l’initialisation et de vos paramètres régionaux. Vérifiez donc ce que toDateString () renvoie et recalculez votre substring () . valeurs basées sur cela.

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;

Si vous ne souhaitez pas utiliser l'instant et 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;
      }
    };
  }

Cela peut également être fait si vous utilisez le kendo.

kendo.toString(dateobject, "MMMM");

Voici la liste des formateurs de site de kendo :

  

" d " Rend le jour du mois, du 1 au 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; f " Les dixièmes de seconde d'une valeur de date et d'heure.

     

" ff " Centièmes de seconde dans une valeur de date et heure.

     

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

     

" M " Le mois, de 1 à 12.

     

& mm; MM " Le mois, de 01 à 12.

     

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

     

& mm; MMMM " Le nom complet du mois.

     

" h " L'heure, en utilisant une horloge de 12 heures de 1 à 12 heures.

     

" hh " L'heure, en utilisant une horloge de 12 heures du 01 au 12.

     

" H " L'heure, en utilisant une horloge de 24 heures de 1 à 23 heures.

     

" HH " L'heure, en utilisant une horloge de 24 heures du 01 au 23.

     

" m " La minute, de 0 à 59.

     

& mm; mm " La minute, de 00 à 59.

     

" s " La seconde, de 0 à 59.

     

" ss " La seconde, de 00 à 59.

     

" tt " Le désignateur AM / PM.

     

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

     

"aaaa" L'année pleine valeur.

     

& z; & zzz " Le fuseau horaire local lors de l’utilisation de formats pour analyser les chaînes de date UTC.

J'ai une solution partielle que j'ai proposée. Il utilise une expression régulière pour extraire le nom du mois et du jour. Cependant, en parcourant les options Région et Langue (Windows), je me rends compte que différentes cultures ont un ordre de format différent. Peut-être qu'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(","));
    }
function getMonthName(month) 
{ 
return ["January","February","March","April","May","June","July","August","September", "October","November","December"][parseInt(month)-1]
}

Une autre façon de formater la date

new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}) //output: "May 21, 2019"

Étendez-vous sur les nombreuses autres excellentes réponses - si vous utilisez jQuery - vous pouvez 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 = nouvelle date (une valeur) . Le principal avantage de ceci est que, selon @nickf, il faut éviter l’espace de nom global.

Pour obtenir un tableau de noms 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/

Utiliser ce partenaire

function month(a){
var mNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
return mNames[a-1];
}

Il suffit d'écrire un simple wrapper 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));

Un rapide bidouillage 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);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top