Erhalten Monatsname von Datum
-
10-07-2019 - |
Frage
Wie kann ich den Namen des Monats generieren (z: Oktober / Oktober)? Ab diesem Zeitpunkt Objekt in JavaScript
var objDate = new Date("10/11/2009");
Lösung
Kürzere Version:
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()]);
Hinweis (2019.03.08) - Diese Antwort von mir, die ich ursprünglich im Jahr 2009 schrieb, ist veraltet. Siehe David Storey Antwort für eine bessere Lösung.
Andere Tipps
Es ist nun möglich, dies mit der ECMAScript Internationalization API zu tun:
const date = new Date(2009, 10, 10); // 2009-11-10
const month = date.toLocaleString('default', { month: 'long' });
console.log(month);
'long'
verwendet den vollständigen Namen des Monats, 'short'
für die Kurznamen und ein 'narrow'
für eine Minimalversion, wie die ersten Buchstaben in alphabetischen Sprachen.
Sie können das Gebietsschema vom Browser ändern 'default'
zu jedem, den Sie bitte (z 'en-us'
), und es wird den richtigen Namen für diese Sprache / Land verwenden.
Mit toLocaleString
api Sie in den Lokalisierungs und Optionen jedes Mal passieren müssen. Wenn Sie die gleichen locale Informationen und Formatierungsoptionen auf mehreren unterschiedlichen Terminen do verwenden wollen, können Sie Intl.DateTimeFormat
verwenden stattdessen:
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".
Weitere Informationen finden Sie in meinem Blog-Post auf der Internationalization API .
Hier ist ein weiterer, mit Unterstützung für die Lokalisierung:)
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']
}
};
Sie können dann leicht Unterstützung für andere Sprachen:
Date.locale.fr = {month_names: [...]};
Wenn Sie nichts dagegen haben das Datum Prototyp erstreckt (und es gibt einige gute Gründe, nicht wollen, dies zu tun), man kann tatsächlich mit einer sehr einfachen Methode kommen:
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"
Diese Funktionen werden dann gelten für alle JavaScript-Date-Objekte.
Ich empfehle herzlich die format
Funktion aus, die moment.js Bibliothek, die Sie wie folgt verwenden können:
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
Mit „MMMM“ anstelle von „MMM“, wenn Sie den vollständigen Namen des Monats benötigen
Neben einer langen Liste von anderen Funktionen, hat es starke Unterstützung rel="nofollow .
Date.prototype.getMonthName = function() {
var monthNames = [ "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" ];
return monthNames[this.getMonth()];
}
Es kann verwendet werden als
var month_Name = new Date().getMonthName();
Sie könnten verwenden datejs , das zu tun. Schauen Sie sich die FormatSpecifiers , MMMM gibt Ihnen den Namen des Monats:
var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));
Und datejs bekam, dass für mehr als 150 Schauplätze lokalisiert! hier
Einige häufig einfacher Prozess von Date-Objekt kann durch diese durchgeführt werden.
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()))
Sie können auch Datum Prototyp wie
machen
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())
Beispiel:
var dateFormat3 = new Date().getMonthName();
# March
var dateFormat4 = new Date().getFormatDate();
# 16 March, 2017
Versuchen:
var objDate = new Date("10/11/2009");
var strDate =
objDate.toLocaleString("en", { day: "numeric" }) + ' ' +
objDate.toLocaleString("en", { month: "long" }) + ' ' +
objDate.toLocaleString("en", { year: "numeric"});
Hier ist eine Art und Weise, die nicht auf einem hartcodierte Array abhängt und unterstützt mehrere locales.
Wenn Sie eine ganze Reihe:
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;
};
Verwendung:
console.log(monthsLocalizedArray('en')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
console.log(monthsLocalizedArray('bg')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"]
Wenn Sie nur einen Monat benötigen (schneller):
var monthLocalizedString = function(month, locale) {
return new Date(2010,month).toLocaleString(locale,{month:"long"});
};
Verwendung:
console.log(monthLocalizedString(1, 'en')); // -> February
console.log(monthLocalizedString(1, 'bg')); // -> февруари
console.log(monthLocalizedString(1, 'de')); // -> Februar
Getestet und funktioniert auf Chrome und IE 11. Am mozilla einige Änderungen erforderlich sind, weil sie das ganze Datum zurückgibt.
Leider ist der beste Weg, die Monatsnamen zu extrahieren ist aus der UTCString Darstellung:
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'
Das natürliche Format dieser Tage benutzen Moment.js.
Die Art und Weise den Monat in einem String-Format zu bekommen, ist sehr einfach in Moment.js keine Notwendigkeit, hart Code der Monatsnamen im Code: Um den aktuellen Monat und Jahr im Monat Namensformat und das Gesamtjahr (Mai 2015) zu erhalten:
moment(new Date).format("MMMM YYYY");
Stattdessen Array deklarieren, die alle den Monatsnamen halten und dann mit einem Index zeigt, können wir es auch in einer kürzeren Version schreiben wie folgt:
var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug
Sie können einen von mehreren verfügbaren Datum Formatierer verwenden. Da dies in der JavaScript-Spezifikation fällt, wird es in beiden Browser und Server-Side-Modi zur Verfügung.
objDate.toString().split(" ")[1]; // gives short name, unsure about locale
objDate.toLocaleDateString.split(" ")[0]; // gives long name
z.
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
Es gibt mehr unter https: // developer. mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Speichern Sie die Namen in einem Array und schaut durch den Index des Monats auf.
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()]);
Wenn Sie jQuery verwenden, sind Sie wahrscheinlich auch mit jQuery UI, das bedeutet, dass Sie $ verwenden können. datepicker.formatDate () .
$.datepicker.setDefaults( $.datepicker.regional[ "nl" ] ); // dutch
$.datepicker.formatDate( "dd MM yy", objDate );
Wenn Sie nicht über eine externe Bibliothek verwenden möchten, oder speichern eine Reihe von Monatsnamen, oder wenn die ECMAScript Internationalisierung API ist nicht gut genug, weil der Browser-Kompatibilität können Sie es jederzeit tun, um die altmodische Art und Weise durch das Extrahieren Info ab dem Datum Ausgabe:
var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);
Dies würde die abgekürzten Monatsnamen geben, z.B. Oktober glaube ich das Datum je in allen möglichen Formaten kommen auf die Initialisierung und Ihre locale nehmen so einen Blick auf Renditen toDateString()
und Ihre substring()
Werte neu berechnet werden, dass basierend auf.
Meine beste Lösung ist wie folgt:
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;
Wenn Sie nicht wollen, Zeit nutzen und will Monatsnamen angezeigt werden -
.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;
}
};
}
Dies kann auch geschehen, wenn Sie Kendo verwenden.
kendo.toString(dateobject, "MMMM");
Hier sind Liste der Formatierer von Kendo Website :
"d" Verweigert den Tag des Monats, von 1 bis 31.
"dd" Der Tag des Monats, von 01 bis 31.
"ddd" Der abgekürzte Name des Tages der Woche.
"dddd" Der vollständige Name des Tages der Woche.
„f“ Die Zehntelsekunden in einem Datums- und Uhrzeitwert.
„ff“ Die Hundertstelsekunden in einem Datums- und Uhrzeitwert.
"fff" Die Millisekunden in einem Datums- und Uhrzeitwert.
"M" Der Monat, von 1 bis 12.
"MM" Der Monat, von 01 bis 12.
"MMM" Der abgekürzte Name des Monats.
"MMMM" Der vollständige Name des Monats.
"h" Die Stunde, einen 12-Stunden-Takt von 1 bis 12 verwendet wird.
"hh" Die Stunde, mit einem 12-Stunden-01-12.
"H" die Stunde, die über eine 24-Stunden-Uhr 1 bis 23 verwendet wird.
"HH" Die Stunde, eine 24-Stunden-Uhr 01 bis 23 verwendet wird.
"m" Die Minute, von 0 bis 59.
"mm" ist die Minute, von 00 bis 59.
"s", die zweite, von 0 bis 59.
"ss", die zweite, von 00 bis 59.
"tt" Der AM / PM-Bezeichner.
"yy" Die letzten zwei Zeichen aus dem Jahreswert.
"yyyy" Das Jahr voller Wert.
"zzz" Die lokale Zeitzone, wenn Formate mit UTC-Datum Strings zu analysieren.
Ich habe eine Teillösung, die ich kam mit. Es verwendet einen regulären Ausdruck den Monat und den Tag Namen zu extrahieren. Aber wie ich die Regions- und Sprachoptionen schaue durch (Windows) Ich weiß, dass verschiedene Kulturen anderes Format haben, um ... vielleicht ein besseres Muster für reguläre Ausdrücke nützlich sein könnte.
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]
}
Eine weitere Möglichkeit, Format Datum
new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}) //output: "May 21, 2019"
extending einfach auf die vielen anderen ausgezeichneten Antworten - wenn Sie jQuery verwenden - man muss nur etwas tun könnte, wie
$.fn.getMonthName = function(date) {
var monthNames = [
"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"
];
return monthNames[date.getMonth()];
};
wo date
ist zum var d = new Date(somevalue)
gleich. Der primäre Vorteil dabei ist, pro @nickf sagte über den globalen Namensraum zu vermeiden.
Um eine Reihe von Monatsnamen zu bekommen:
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
Mit diesem paaren
function month(a){
var mNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
return mNames[a-1];
}
Sie einfach einen einfachen Wrapper um toLocaleString
schreiben:
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));
Eine schnelle Hack, den ich verwenden, die gut funktioniert:
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);