Holen Sie sich den Monatsnamen vom Datum

672

Wie kann ich aus diesem Datumsobjekt in JavaScript den Namen des Monats (z. B. Oktober / Oktober) generieren?

var objDate = new Date("10/11/2009");
Shyju
quelle
Wäre schön, wenn stackoverflow.com/a/18648314/5846045 akzeptiert werden könnte, um zukünftige Leser zu einer besseren Antwort zu führen
Boghyon Hoffmann

Antworten:

1137

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 2009 geschrieben habe, ist veraltet. Siehe David Storeys Antwort für eine bessere Lösung.

Jesper
quelle
401
Es ist ein bisschen frustrierend, dass selbst eine new Date()Rückgabe, Tue Sep 06 2011 20:02:25 GMT+0200 (CEST)was eindeutig bedeutet, dass das Date-Objekt bereits alle diese intern definierten (Monats- und Wochentagsnamen) hat, nicht öffentlich ist, sodass wir alles erneut eingeben müssen. :(
Zanona
9
Keine ideale Lösung, wenn für jede unterstützte Sprache Monatsnamen angegeben werden müssen. Es muss einen besseren Weg geben, String#splitmit toStringoder zu arbeiten toDateString.
Ryan
23
mehrere Sprachen = mehrdimensionales Array;) Übersetzungen ["monthName"] [currentLanguage] [d.getMonth ()]
nuala
25
@ zanona - Ein Datumsobjekt muss nicht unbedingt "all dies intern definiert" haben. In ECMA-262 ist lediglich ein Zeitwert erforderlich , bei dem es sich um eine Zahl handelt. Was Sie sehen, ist das Ergebnis von Date.prototype.toString , das von der Implementierung abhängig ist.
RobG
9
@ Devin, aber das ordnet das Array jedes Mal neu zu, wenn Sie darauf zugreifen möchten.
Cole Johnson
775

Dies ist jetzt mit der ECMAScript Internationalization API möglich:

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'den Kurznamen und 'narrow'eine minimalere Version, z. B. den ersten Buchstaben in alphabetischen Sprachen.

Sie können das Gebietsschema von Browsern 'default'nach 'en-us'Belieben ändern (z. B. ) und es wird der richtige Name für diese Sprache / dieses Land verwendet.

Mit toLocaleStringAPI müssen Sie jedes Mal das Gebietsschema und die Optionen übergeben. Wenn Sie an mehreren verschiedenen Daten dieselben Gebietsschemainformationen und Formatierungsoptionen verwenden möchten, können Sie Intl.DateTimeFormatstattdessen Folgendes verwenden:

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 Blogbeitrag zur Internationalisierungs-API .

David Storey
quelle
1
Ich kann bestätigen, dass die Safari Technology Preview dies unterstützt. Ich denke, sollte die akzeptierte Antwort sein
Salman Hasrat Khan
1
Funktioniert auch im Knoten!
Mikemaccana
4
Tolle Lösung, aber für meinen Anwendungsfall war dies zu langsam. Ich habe mehrere hundert Artikel verarbeitet und es waren durchschnittlich 1 ms pro Artikel, um sowohl den Monat als auch das Jahr zu erhalten (Chrom, Safari). Am Ende habe ich die akzeptierte Antwort verwendet, aber nur, weil sie viel besser lief. Dies wäre meine bevorzugte Methode, wenn ich sie nur einige Male aufrufen müsste.
t.888
7
Dies wird jetzt in den meisten Browsern unterstützt: caniuse.com/#search=intl
eyal83
2
Hinweis zu React Native funktioniert dies für iOS-Geräte, aber unter Android wird es falsch angezeigt (spuckt nur den gesamten Zeitstempel aus).
Hardanger
162

Hier ist noch eine 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 ganz einfach Unterstützung für andere Sprachen hinzufügen:

Date.locale.fr = {month_names: [...]};
krcko
quelle
2
Beachten Sie dies auf dem Knoten nicht funktionieren wird ab 6.x wie Date.localeist undefined. Es ist jedoch eine hervorragende Antwort für andere JS-Implementierungen!
Mikemaccana
Dies kann sinnvoll sein, wenn die lokalisierten Namensarrays mit Date.prototype.toLocaleString erstellt wurden . Das Erweitern eingebauter Prototypen und Objekte wird ebenfalls nicht als gute Idee angesehen.
RobG
62

Wenn es Ihnen nichts ausmacht, den Date-Prototyp zu erweitern (und es gibt einige gute Gründe, dies nicht zu tun), können Sie tatsächlich eine sehr einfache Methode finden:

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 gelten dann für alle Javascript-Datumsobjekte.

nickf
quelle
6
"und es gibt einige gute Gründe, dies nicht tun zu wollen". Nur neugierig: Welche Gründe meinst du?
KooiInc
13
@Kooilnc: Das liegt daran, dass Sie im Wesentlichen im globalen Raum arbeiten. Wenn Sie die Funktionen oder Bibliotheken anderer Personen importieren, die dies ebenfalls tun, überschreiben sich diese möglicherweise gegenseitig.
Nickf
61

Ich empfehle die formatFunktion aus der Bibliothek moment.js , die Sie folgendermaßen 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

Verwenden Sie "MMMM" anstelle von "MMM", wenn Sie den vollständigen Namen des Monats benötigen

Neben einer langen Liste weiterer Funktionen wird die Internationalisierung nachdrücklich unterstützt .

Brian M. Hunt
quelle
2
Der erste würde zu "Apr" führen. "MMM" zeigt die ersten drei Buchstaben des Monats an. Wenn Sie den vollständigen Namen möchten, verwenden Sie stattdessen "MMMM". Hilfe finden Sie in der Dokumentation .
Tomnar
Wenn Sie den Weg der starken Optimierung und Reduzierung von http-Anforderungen beschreiten, ist dies möglicherweise keine Option für Sie. Verwenden Sie stattdessen nur ein Array von Monatsnamen, wenn Sie die Monatsnamen nur in einer Codezeile formatieren möchten.
OzzyTheGiant
3
Moment ist eine sehr große Bibliothek, und viel zu viel dafür. Moderne Alternativen umfassen Luxonund date-fns, aber dann wieder gibt es breite Browser - Unterstützung für die Internationalisierung API heute .
Dan Dascalescu
21
Date.prototype.getMonthName = function() {
    var monthNames = [ "January", "February", "March", "April", "May", "June", 
                       "July", "August", "September", "October", "November", "December" ];
    return monthNames[this.getMonth()];
}

Es kann als verwendet werden

var month_Name = new Date().getMonthName();
Beena Shetty
quelle
18

Auf diese Weise kann ein üblicher einfacher Prozess ab Datumsobjekt ausgefü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()))

Oder Sie können 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())

Ex:

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

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

MAK Ripon
quelle
2
Vielen Dank! Ich verstehe noch keine Prototypen, freue mich aber darauf, es zu versuchen.
Eric Hepperle - CodeSlayer2010
17

Sie können dazu datejs verwenden. Überprüfen Sie die FormatSpecifiers . MMMM gibt Ihnen den Namen des Monats:

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

Und Datejs haben das für mehr als 150 Locales lokalisiert! Siehe hier

Tim Büthe
quelle
12

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"});
beneus
quelle
Das hat im Winter 2017 funktioniert! Die Verwendung von "en-us", wie von anderen Benutzern vor etwa 3 Jahren vorgeschlagen, funktioniert in Chrome nicht.
Eric Hepperle - CodeSlayer2010
9

Hier ist ein Weg, der nicht von einem fest codierten Array abhängt und mehrere Gebietsschemas unterstützt.

Wenn Sie ein ganzes Array benötigen:

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

Verwendungszweck:

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

Wenn Sie nur einen ausgewählten Monat benötigen (schneller):

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

Verwendungszweck:

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

Getestet und funktioniert einwandfrei unter Chrome und IE 11. Unter Mozilla sind einige Änderungen erforderlich, da das gesamte Datum zurückgegeben wird.

Дамян Станчев
quelle
Dies wird noch nicht einmal in Sicherheit funktionieren. WegentoLocaleString
Sergei Panfilov
8

Leider ist der beste Weg, den Monatsnamen zu extrahieren, die 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'
Aaron Cronin
quelle
8

Anstatt ein Array zu deklarieren, das den gesamten Monatsnamen enthält, und dann mit einem Index zu zeigen, können wir es auch in einer kürzeren Version wie folgt schreiben:

var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug
Anand Kumar
quelle
Bitte beachten Sie, dass dies in allen Browsern nicht zuverlässig funktioniert ... Safari (mobil und Desktop) gibt ungefähr Folgendes aus: MAY 1, 2015 AT 12:00:00 AM GMT-4(bei Verwendung von { month: "long" }Parametern)
David M.
1
Sie können die Standardeinstellung auch mitnew Date().toLocaleString(navigator.language, { month: "short" })
Remo H. Jansen
8

document.write(new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}))

AzizStark
quelle
7

Das natürliche Format dieser Tage ist die Verwendung von Moment.js.

Die Möglichkeit, den Monat in einem Zeichenfolgenformat abzurufen, ist in Moment.js sehr einfach. Sie müssen die Monatsnamen in Ihrem Code nicht fest codieren: So erhalten Sie den aktuellen Monat und das aktuelle Jahr im Monatsnamenformat und im gesamten Jahr (Mai 2015):

  moment(new Date).format("MMMM YYYY");
Shacharsol
quelle
Da der Moment bereits für andere Zwecke installiert ist, ist dies die einfachste Lösung.
CFP Support
1
Moment ist eine sehr große Bibliothek, und viel zu viel dafür. Moderne Alternativen umfassen Luxonund date-fns, aber dann wieder gibt es breite Browser - Unterstützung für die Internationalisierung API heute .
Dan Dascalescu
7

Eine andere Möglichkeit, das Datum zu formatieren

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

Sie können einen von mehreren verfügbaren Datumsformatierern verwenden. Da dies unter die JavaScript-Spezifikation fällt, wird es sowohl im browser- als auch im serverseitigen Modus verfügbar sein.

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

z.B

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

Weitere Informationen finden Sie unter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

Dinesh
quelle
4

Wenn Sie keine externe Bibliothek verwenden oder ein Array von Monatsnamen speichern möchten oder wenn die ECMAScript Internationalization API aufgrund der Browserkompatibilität nicht gut genug ist, können Sie dies immer auf die altmodische Weise tun, indem Sie die Informationen aus dem extrahieren Datumsausgabe:

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

Dies würde Ihnen den abgekürzten Monatsnamen geben, z. B. Okt. Ich glaube, das Datum wird abhängig von der Initialisierung und Ihrem Gebietsschema in allen möglichen Formaten vorliegen. Sehen Sie sich also an, was toDateString()zurückgibt, und berechnen Sie Ihre substring()Werte basierend darauf neu.

Matt K.
quelle
3

Wenn Sie jQuery verwenden, verwenden Sie wahrscheinlich auch die jQuery-Benutzeroberfläche. Dies bedeutet, dass Sie $ .datepicker.formatDate () verwenden können .

$.datepicker.setDefaults( $.datepicker.regional[ "nl" ] );   // dutch
$.datepicker.formatDate( "dd MM yy", objDate );
mhu
quelle
3

Meine beste Lösung lautet 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;
user3920942
quelle
scheint mir ziemlich spröde zu sein ... und es beantwortet die Frage des OP nicht wirklich
David M.
1
Was macht dies zu Ihrer "besten Lösung"?
Dan Dascalescu
3

Mit momentjs , benutzen Sie einfach die Format - Notation.

const myDate = new Date()
const shortMonthName = moment(myDate).format('MMM') // Aug
const fullMonthName = moment(myDate).format('MMMM') // August
lnmunhoz
quelle
1
Abgesehen davon, dass diese Antwort bereits zweimal gegeben wurde, momentgibt es eine sehr große Bibliothek, und viel zu viel dafür. Moderne Alternativen umfassen Luxonund date-fns, aber dann wieder gibt es breite Browser - Unterstützung für die Internationalisierung API heute .
Dan Dascalescu
3

Dies kann auch durchgeführt werden, wenn Sie Kendo verwenden.

kendo.toString(dateobject, "MMMM");

Hier ist eine Liste der Formatierer von der Kendo-Site :

"d" Gibt den Tag des Monats von 1 bis 31 an.

"dd" Der Tag des Monats von 01 bis 31.

"ddd" Der abgekürzte Name des Wochentags.

"dddd" Der vollständige Name des Wochentags.

"f" Die Zehntelsekunde in einem Datums- und Zeitwert.

"ff" Die Hundertstelsekunde in einem Datums- und Zeitwert.

"fff" Die Millisekunden in einem Datums- und Zeitwert.

"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 im 12-Stunden-Format von 1 bis 12.

"hh" Die Stunde mit einer 12-Stunden-Uhr von 01 bis 12.

"H" Die Stunde im 24-Stunden-Format von 1 bis 23.

"HH" Die Stunde im 24-Stunden-Takt von 01 bis 23.

"m" Die Minute von 0 bis 59.

"mm" 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 beiden Zeichen aus dem Jahreswert.

"JJJJ" Der volle Wert des Jahres.

"zzz" Die lokale Zeitzone bei Verwendung von Formaten zum Parsen von UTC-Datumszeichenfolgen.

Navoneel Talukdar
quelle
2

Wenn Sie moment nicht verwenden und den Monatsnamen anzeigen möchten -

.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;
      }
    };
  }
Kanchan
quelle
2

Für mich ist dies die beste Lösung,

auch für TypeScript

const env = process.env.REACT_APP_LOCALE || 'en';

const namedMonthsArray = (index?: number): string[] | string => {
  const months = [];

  for (let month = 0; month <= 11; month++) {
    months.push(
      new Date(new Date('1970-01-01').setMonth(month))
        .toLocaleString(env, {
          month: 'long',
        })
        .toString(),
    );
  }
  if (index) {
    return months[index];
  }
  return months;
};

Ausgabe ist

["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
Kratak
quelle
2

Sie können einfach das Date.toLocaleDateString () verwenden und das gewünschte Datum als Parameter analysieren

const event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

const options = {  year: 'numeric', month: 'short', day: 'numeric' };

console.log(event.toLocaleDateString('de-DE', options));
// expected output: Donnerstag, 20. Dezember 2012

console.log(event.toLocaleDateString('en-US', options));
// US format 


// In case you only want the month
console.log(event.toLocaleDateString(undefined, { month: 'short'}));
console.log(event.toLocaleDateString(undefined, { month: 'long'}));

Weitere Informationen finden Sie in der Firefox- Dokumentation

Andres Paul
quelle
1

Speichern Sie die Namen in einem Array und suchen Sie nach dem Index des Monats.

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

JavaScript-Methode getMonth ()

rahul
quelle
22
Warum nicht var month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];? Weit kürzer als sie einzeln hinzuzufügen ...
Fizzix
1

Ich habe eine Teillösung, die ich mir ausgedacht habe. Es wird ein regulärer Ausdruck verwendet, um den Monats- und Tagesnamen zu extrahieren. Beim Durchsehen der Optionen für Region und Sprache (Windows) stelle ich jedoch fest, dass verschiedene Kulturen unterschiedliche Formatreihenfolgen haben. Vielleicht könnte ein besseres Muster für reguläre Ausdrücke hilfreich sein.

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(","));
    }
Remus
quelle
Also, minimal funktioniert es mit Englisch und Spanisch ... ID vermutet alles, was TAG, MONAT Datum, Jahr FORMAT ist
Remus
Ich habe ein bisschen darüber nachgedacht. Ich denke, um eine wirklich sprachunabhängige Lösung zu haben, müsste man einen regulären Ausdruck haben, der UNICODE-Zeichenbereiche verwendet. Die Zeichenbereiche wären für verschiedene Alphabete unterschiedlich, daher glaube ich nicht, dass es eine Einheitsgröße für alle RegExp geben würde, die wir verwenden könnten.
Remus
0

Wenn Sie nur jQuery verwenden, können Sie einfach so etwas tun

$.fn.getMonthName = function(date) {

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

    return monthNames[date.getMonth()];

};

wo dateist gleich dem var d = new Date(somevalue). Der Hauptvorteil davon ist laut @nickf die Vermeidung des globalen Namespace.

Tim
quelle
0

So erhalten Sie eine Reihe von Monatsnamen:

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/

vava
quelle
0

Schreiben Sie einfach einen einfachen Umschlag herum 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));

John Slegers
quelle
0

Ein schneller Hack, den ich verwendet habe und der 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);

James Heazlewood
quelle