it-swarm.com.de

Liefert den Monatsnamen von Date

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

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

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

946
Jesper

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

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

long verwendet den vollständigen Namen des Monats, short für den Kurznamen und narrow für eine minimalere Version, z. B. den ersten Buchstaben in alphabetischen Sprachen.

Sie können das Gebietsschema von en-us in ein beliebiges Gebiet ändern, das den gewünschten Namen für diese Sprache/dieses Land verwendet. 

Mit toLocaleString müssen Sie jedes Mal das Gebietsschema und die Optionen übergeben. Wenn Sie dieselben Gebietsschema-Informationen und Formatierungsoptionen für mehrere verschiedene Datumsangaben verwenden, können Sie stattdessen Intl.DateTimeFormat verwenden:

if (typeof Intl == 'object' && typeof Intl.DateTimeFormat == 'function') {
  var formatter = new Intl.DateTimeFormat("fr", {
      month: "short"
    }),
    month1 = formatter.format(new Date()),
    month2 = formatter.format(new Date(2003, 5, 12));

  // current month in French and "juin".
  console.log(month1 + " and " + month2);
  
} else {
  console.log('Intl.DateTimeFormat not supported');
}

Das Hauptproblem bei dieser API ist, dass es neu ist. Es ist nur in Blink-Browsern (Chrome und Opera), IE11, Microsoft Edge, Firefox 29+ und Safari 10+ verfügbar

Weitere Informationen finden Sie in meinem Blogbeitrag in der Internationalization API .

464
David Storey

Hier ist noch einer, 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 problemlos Unterstützung für andere Sprachen hinzufügen:

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

Wenn es Ihnen nichts ausmacht, den Date-Prototyp zu erweitern (und es gibt einige gute Gründe, dies nicht zu tun), können Sie 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 all javascript Date-Objekte.

60
nickf

Ich empfehle die Funktion format aus der moment.js Bibliothek, die Sie wie folgt verwenden können:

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

Neben einer langen Liste weiterer Funktionen verfügt es über eine starke Unterstützung für die Internationalisierung .

54
Brian M. Hunt
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();
17
Beena Shetty

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

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

Und Datejs hat das Lokalisiert für mehr als 150 Orte! Siehe hier

16
Tim Büthe

Hiermit kann ein beliebiger einfacher Prozess ab Datumsobjekt 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()))

Oder Sie können einen Datumsprototyp 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

14
M.A.K. Ripon

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

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

Um den Monat in einem String-Format zu erhalten, ist es in Moment.js sehr einfach, die Monatsnamen in Ihrem Code nicht hart zu codieren: Um den aktuellen Monat und das aktuelle Jahr im Monatsformat und im vollen Jahr abzurufen (Mai 2015 ):

  moment(new Date).format("MMMM YYYY");
7
shacharsol

Hier ist ein Weg, der nicht von einem hartcodierten Array abhängt und mehrere Ländereinstellungen 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 (schneller) benötigen:

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 gut mit Chrome und IE 11. Auf Mozilla sind einige Änderungen erforderlich, da das gesamte Datum zurückgegeben wird.

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 schreiben:

var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug
7
Anand kumar

Leider ist der beste Weg, den Monatsnamen aus der UTCString-Darstellung zu extrahieren:

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'
6
Aaron Cronin

Sie können eines von mehreren verfügbaren Date-Formatierungsprogrammen verwenden. Da dies unter die JavaScript-Spezifikation fällt, ist es sowohl im Browser- als auch im serverseitigen Modus verfügbar.

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

5
Dinesh

Verwenden Sie bei momentjs einfach die format - Notation.

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

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 getMonth () - Methode

2
rahul

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

Wenn Sie keinen Moment verwenden möchten 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;
      }
    };
  }
2
Kanchan

Wenn Sie keine externe Bibliothek verwenden oder ein Array mit Monatsnamen speichern möchten oder die ECMAScript Internationalization API aufgrund der Browserkompatibilität nicht gut genug ist, können Sie dies immer auf die alte Art tun, indem Sie die Informationen aus dem Datum Ausgabe:

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

Dies würde Ihnen den abgekürzten Monatsnamen geben, z. Ich glaube, dass das Datum je nach Initialisierung und Ihrem Gebietsschema in allen möglichen Formaten vorliegen wird. Schauen Sie sich also an, was toDateString() zurückgibt und berechnen Sie Ihre substring()-Werte basierend darauf.

2
Matt K

Dies ist auch möglich, wenn Sie Kendo verwenden.

kendo.toString(dateobject, "MMMM");

Hier sind die Liste der Formatierer von kendo site :

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

"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 eines Datums- und Zeitwerts.

"ff" Die Hundertstelsekunde eines Datums- und Zeitwerts.

"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 mit einer 12-Stunden-Uhr von 1 bis 12 Uhr.

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

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

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

"m" Die Minute von 0 bis 59.

"mm" Die Minute von 00 bis 59.

"s" Die Sekunde von 0 bis 59.

"ss" Der zweite von 00 bis 59.

"tt" Der AM/PM-Bezeichner.

"yy" Die letzten beiden Zeichen des Jahreswerts.

"yyyy" Der Jahreswert.

"zzz" Die lokale Zeitzone, wenn Formate zum Parsen von UTC-Datumszeichenfolgen verwendet werden.

2

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;
2
user3920942
function getMonthName(month) 
{ 
return ["January","February","March","April","May","June","July","August","September", "October","November","December"][parseInt(month)-1]
}
1
John Nikho

Ich habe eine Teillösung, die ich mir ausgedacht habe. Es verwendet einen regulären Ausdruck, um den Namen des Monats und des Tages zu extrahieren. Beim Durchsehen der Regions- und Sprachoptionen (Windows) stelle ich jedoch fest, dass unterschiedliche 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(","));
    }
1
Remus

Eine andere Möglichkeit, das Datum zu formatieren

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

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

0

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"]
0
Kratak

Um ein Array von Monatsnamen zu erhalten:

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
vava

Schreibe einfach einen einfachen Wrapper um 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
John Slegers

Verwenden Sie diesen Kumpel

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

Erweitern Sie einfach die vielen anderen hervorragenden Antworten - wenn Sie 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()];

};

dabei ist date gleich der var d = new Date(somevalue). Der Hauptvorteil davon ist, wie Per @nickf gesagt hat, den globalen Namensraum zu vermeiden.

0
Tim