sumar - obtener mes actual javascript
Obtener el nombre del mes de la fecha (30)
¿Cómo puedo generar el nombre del mes (por ejemplo, octubre / octubre) a partir de este objeto de fecha en JavaScript?
var objDate = new Date("10/11/2009");
Ahora es posible hacer esto con la API de internacionalización de ECMAScript:
var date = new Date("10/11/2009"),
locale = "en-us",
month = date.toLocaleString(locale, { month: "long" });
http://jsfiddle.net/dstorey/Xgerq/
"largo" usa el nombre completo del mes, "corto" para el nombre corto y "estrecho" para una versión más mínima, como la primera letra en idiomas alfabéticos.
Puede cambiar la configuración regional a la que desee, y utilizará el nombre correcto para ese idioma / país.
Con toLocaleString
tienes que pasar la configuración regional y las opciones cada vez. Si va a utilizar la misma información de configuración regional y las mismas opciones de formato en varias fechas diferentes, puede usar Intl.DateTimeFormat
en Intl.DateTimeFormat
lugar:
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);
El principal problema con esta API es que es nuevo. Solo está disponible en los navegadores Blink (Chrome y Opera), IE11, Microsoft Edge, Firefox 29+ y Safari 10+
Para obtener más información, consulte la publicación de mi blog sobre la API de internacionalización .
Almacene los nombres en una matriz y busque por el índice del mes.
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()]);
Aquí hay otro, con soporte para localización :)
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'']
}
};
A continuación, puede agregar fácilmente soporte para otros idiomas:
Date.locale.fr = {month_names: [...]};
Aquí hay una manera que no depende de una matriz codificada y es compatible con múltiples configuraciones regionales.
Si necesitas toda una serie:
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;
};
Uso:
console.log(monthsLocalizedArray(''en'')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
console.log(monthsLocalizedArray(''bg'')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"]
Si solo necesitas un mes seleccionado (más rápido):
var monthLocalizedString = function(month, locale) {
return new Date(2010,month).toLocaleString(locale,{month:"long"});
};
Uso:
console.log(monthLocalizedString(1, ''en'')); // -> February
console.log(monthLocalizedString(1, ''bg'')); // -> февруари
console.log(monthLocalizedString(1, ''de'')); // -> Februar
Probado y funciona bien en Chrome e IE 11. En Mozilla se necesitan algunas modificaciones, ya que devuelve la fecha completa.
Desafortunadamente, la mejor manera de extraer el nombre del mes es de la representación 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''
El formato natural de estos días es usar Moment.js.
La forma de obtener el mes en formato de cadena es muy simple en Moment.js. No es necesario que escriba los nombres de los meses en su código: Para obtener el mes actual y el año en formato de mes y año completo (mayo de 2015):
moment(new Date).format("MMMM YYYY");
En lugar de declarar una matriz que contiene todo el nombre del mes y luego apuntar con un índice, también podemos escribirlo en una versión más corta como se muestra a continuación:
var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug
Esto también se puede hacer si está utilizando kendo.
kendo.toString(dateobject, "MMMM");
Aquí hay una lista de formateadores del sitio de Kendo :
"d" Representa el día del mes, del 1 al 31.
"dd" El día del mes, del 01 al 31.
"ddd" El nombre abreviado del día de la semana.
"dddd" El nombre completo del día de la semana.
"f" Las décimas de segundo en un valor de fecha y hora.
"ff" Las centésimas de segundo en un valor de fecha y hora.
"fff" Los milisegundos en un valor de fecha y hora.
"M" El mes, del 1 al 12.
"MM" El mes, del 01 al 12.
"MMM" El nombre abreviado del mes.
"MMMM" El nombre completo del mes.
"h" La hora, utilizando un reloj de 12 horas de 1 a 12.
"hh" La hora, usando un reloj de 12 horas de 01 a 12.
"H" La hora, utilizando un reloj de 24 horas de 1 a 23.
"HH" La hora, utilizando un reloj de 24 horas del 01 al 23.
"m" El minuto, de 0 a 59.
"mm" El minuto, de 00 a 59.
"s" El segundo, de 0 a 59.
"ss" El segundo, de 00 a 59.
"tt" El designador AM / PM.
"yy" Los dos últimos caracteres del valor del año.
"yyyy" El valor total del año.
"zzz" La zona horaria local cuando se utilizan formatos para analizar cadenas de fecha UTC.
Hay un boletín de fecha realmente útil aquí: http://code.google.com/p/jqueryjs/source/browse/trunk/plugins/methods/date.js?r=6305 Esto extiende la clase Fecha incorporada con Métodos como getMonthName () etc.
Mi mejor solución es la siguiente:
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;
Para obtener el mes actual sin ingresar una fecha, use este código:
var dateToday = new Date();
var locale = "en-us";
var month = dateToday.toLocaleString(locale, {month: "long"});
alert(month);
Para obtener una matriz de nombre del mes:
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
Puede utilizar uno de los varios formateadores de fecha disponibles. Dado que esto se encuentra dentro de la especificación de JavaScript, estará disponible en los modos del lado del servidor y del navegador.
objDate.toString().split(" ")[1]; // gives short name, unsure about locale
objDate.toLocaleDateString.split(" ")[0]; // gives long name
p.ej
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
Hay más en https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
Puedes usar datejs para hacer eso. Verifique los FormatSpecifiers , MMMM le da el nombre del mes:
var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));
¡Y los datejs lo han localizado para más de 150 locales! Mira aquí
Recomiendo encarecidamente la función de format
de, la biblioteca momentjs , que puede usar así:
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
Además de una larga lista de otras características, tiene un fuerte soporte para la internacionalización .
Se puede hacer un proceso fácil desde el objeto de fecha.
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()))
O puedes hacer la fecha del prototipo como
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
Si está usando jQuery, probablemente también esté usando la interfaz de usuario de jQuery, lo que significa que puede usar $.datepicker.formatDate() .
$.datepicker.setDefaults( $.datepicker.regional[ "nl" ] ); // dutch
$.datepicker.formatDate( "dd MM yy", objDate );
Si no desea utilizar el momento y desea mostrar el nombre del mes:
.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;
}
};
}
Si no desea utilizar una biblioteca externa, o almacenar una matriz de nombres de meses, o si la API de internacionalización de ECMAScript no es lo suficientemente buena debido a la compatibilidad del navegador, siempre puede hacerlo de la manera antigua extrayendo la información de fecha de salida:
var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);
Esto le daría el nombre abreviado del mes, por ejemplo, octubre. Creo que la fecha vendrá en todo tipo de formatos dependiendo de la inicialización y su ubicación, así que eche un vistazo a lo que toDateString()
devuelve y vuelva a calcular sus valores de substring()
función de .
Si no te importa extender el prototipo de fecha (y hay algunas buenas razones para no querer hacer esto), puedes llegar a un método muy fácil:
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"
Estas funciones se aplicarán a todos los objetos de fecha de javascript.
Simplemente extendiendo las muchas otras respuestas excelentes, si está usando jQuery, podría hacer algo como
$.fn.getMonthName = function(date) {
var monthNames = [
"January", "February", "March",
"April", "May", "June",
"July", "August", "September",
"October", "November", "December"
];
return monthNames[date.getMonth()];
};
donde date
es igual a la var d = new Date(somevalue)
. La principal ventaja de esto es que @nickf dijo que se debe evitar el espacio de nombres global.
Solo escribe un envoltorio simple alrededor 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));
Tengo una solución parcial que se me ocurrió. Utiliza una expresión regular para extraer el nombre del mes y el día. Pero al mirar las opciones de Región e Idioma (Windows), me doy cuenta de que las diferentes culturas tienen un orden de formato diferente ... quizás un mejor patrón de expresión regular podría ser útil.
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(","));
}
Tratar:
var objDate = new Date("10/11/2009");
var strDate =
objDate.toLocaleString("en", { day: "numeric" }) + '' '' +
objDate.toLocaleString("en", { month: "long" }) + '' '' +
objDate.toLocaleString("en", { year: "numeric"});
Un truco rápido que utilicé y que funciona 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);
Usa este compañero
function month(a){
var mNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
return mNames[a-1];
}
Versión más corta:
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()]);
Date.prototype.getMonthName = function() {
var monthNames = [ "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" ];
return monthNames[this.getMonth()];
}
Puede ser utilizado como
var month_Name = new Date().getMonthName();
function getMonthName(month)
{
return ["January","February","March","April","May","June","July","August","September", "October","November","December"][parseInt(month)-1]
}