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");
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()]);
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 .
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: [...]};
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.
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 .
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);
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 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
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
, 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"});
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");
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.
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
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
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'
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()]);
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;
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..
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 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.
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;
}
};
}
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.
function getMonthName(month)
{
return ["January","February","March","April","May","June","July","August","September", "October","November","December"][parseInt(month)-1]
}
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(","));
}
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()];
};
où 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.
utiliser ce Maté
function month(a){
var mNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
return mNames[a-1];
}
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
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));
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);