Estoy luchando por hacer una extensión en el objeto de fecha para devolver el mes actual en nombre. Debería devolver (enero) si se llama al método d.getMonthText ().

He buscado una extensión en línea, pero parece que no puedo entenderlo.

-4
Maxim 11 ene. 2017 a las 16:35

6 respuestas

La mejor respuesta

Simplemente asigne el valor del método date.getMonth() a los valores del mes

Date.prototype.getMonthText = function() {
  var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
  return months[this.getMonth()];
}

var now = new Date();
var month = now.getMonthText();
console.log(month);
8
Medet Tleukabiluly 11 ene. 2017 a las 13:42

Aunque no se recomienda, puede agregar métodos a casi cualquier objeto incorporado de JavaScript a través de su propiedad prototipo.

Date.prototype.getMonthName = function() {
    let months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];

    return months[this.getMonth()];
};

Entonces solo úsalo:

let date = new Date();
let month = date.getMonthName();
3
RobG 12 ene. 2017 a las 00:31

Podrías parchear el objeto prototipo de Date e implementar un método de extensión:

Date.prototype.getMonthName = function() {
  return "January,February,March,April,May,June,July,August,September,October,November,December".split(",")[this.getMonth()];
}
-2
aquaraga 24 nov. 2017 a las 11:01

Solo para agregar una opción, puede considerar toLocaleString que debería ser compatible con la API de internacionalización ECMA 402. Todavía no es omnipresente, pero vale la pena considerarlo en el futuro, ya que devolverá el nombre del mes en cualquier idioma utilizando los códigos de idioma ISO 639-1:

Date.prototype.getMonthName = function(lang) {
  // Default language is English
  lang = lang || 'en-GB';
  return this.toLocaleString(lang, {month:'long'});
}

console.log(new Date().getMonthName())        // English (default)

console.log(new Date().getMonthName('ar-sy')) // Arabic

console.log(new Date().getMonthName('es-py')) // Spanish
1
RobG 12 ene. 2017 a las 00:41

Ahí vas de una manera muy básica. Esta función te devolverá el nombre de Month

<script>
function getMonthText(){
var month;
 switch (new Date().getMonth()) {
   case 0:
     month= "Jan";
     break;
   case 1:
     month= "Feb";
     break;
   case 2:
     month= "March";
     break;
   case 3:
     month= "April";
     break;
   case 4:
     month= "May";
     break;
   case 5:
     month= "June";
     break;
   case  6:
     month= "July";
     break;
   case  7:
     month= "August";
     break;
   case  8:
     month= "Sep";
     break;
   case  9:
     month= "Oct";
     break;
   case  10:
     month= "Nov";
     break;
   case  11:
     month= "Dec";
     break;
}}
 </script>
0
George Bailey 11 ene. 2017 a las 13:47

Versión ECMAScript 6:

getPreviousMonth(monthBefore) {
    let monthList = [];
    let date = new Date();
    for (let i = 0; i < monthBefore; i++) {
        date.setMonth(date.getMonth() - 1);
        monthList.push(date.toLocaleString('en-us', {
            month: 'long',
        }));
    }
    return monthList;
}
0
Joffrey Hernandez 27 ene. 2017 a las 09:55