¿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");
¿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");
Respuestas:
Versión más corta:
Nota (2019-03-08): esta respuesta que escribí originalmente en 2009 está desactualizada. Vea la respuesta de David Storey para una mejor solución.
fuente
new Date()
regresar, loTue Sep 06 2011 20:02:25 GMT+0200 (CEST)
que claramente significa que el objeto Date ya tiene todo esto definido internamente (nombres de día de mes y semana), no es público, por lo que tenemos que volver a escribirlo todo. :(String#split
contoString
otoDateString
.Ahora es posible hacer esto con la API de internacionalización ECMAScript:
'long'
usa el nombre completo del mes,'short'
para el nombre corto y'narrow'
para una versión más mínima, como la primera letra en idiomas alfabéticos.Puede cambiar la configuración regional del navegador
'default'
a la que prefiera (por ejemplo'en-us'
), y usará el nombre correcto para ese idioma / país.Con
toLocaleString
api tienes que pasar la configuración regional y las opciones cada vez. Si va a usar la misma información de configuración regional y opciones de formato en varias fechas diferentes, puede usarIntl.DateTimeFormat
en su lugar:Para obtener más información, consulte mi publicación de blog sobre la API de internacionalización .
fuente
Aquí hay otro, con soporte para localización :)
luego puede agregar fácilmente soporte para otros idiomas:
fuente
Date.locale
estáundefined
. Sin embargo, es una excelente respuesta para otras implementaciones de JS.Si no le importa extender el prototipo de Fecha (y hay algunas buenas razones para no querer hacer esto), puede encontrar un método muy sencillo:
Estas funciones se aplicarán a todos los objetos Date de JavaScript.
fuente
Recomiendo encarecidamente la
format
función de la biblioteca moment.js , que puede usar así:Use "MMMM" en lugar de "MMM" si necesita el nombre completo del mes
Además de una larga lista de otras características, tiene un fuerte apoyo para la internacionalización .
fuente
Luxon
ydate-fns
, una vez más, hoy en día existe un amplio soporte de navegador para la API de internacionalización .Se puede usar como
fuente
Esto puede hacer un proceso fácil común desde el objeto de fecha.
O puedes hacer un prototipo de fecha como
Ex:
var dateFormat3 = new Date().getMonthName();
# March
var dateFormat4 = new Date().getFormatDate();
# 16 March, 2017
fuente
Puede usar datejs para hacer eso. Verifique los FormatSpecifiers , MMMM le da el nombre del mes:
¡Y datejs consiguió eso localizado para más de 150 locales! Mira aquí
fuente
Tratar:
fuente
Aquí hay una manera que no depende de una matriz codificada y admite múltiples configuraciones regionales.
Si necesita una matriz completa:
Uso:
Si solo necesita un mes seleccionado (más rápido):
Uso:
Probado y funciona bien en Chrome e IE 11. En mozilla se necesitan algunas modificaciones, ya que devuelve la fecha completa.
fuente
toLocaleString
Desafortunadamente, la mejor manera de extraer el nombre del mes es desde la representación UTCString:
fuente
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 de la siguiente manera:
fuente
MAY 1, 2015 AT 12:00:00 AM GMT-4
(cuando se usan{ month: "long" }
parámetros)new Date().toLocaleString(navigator.language, { month: "short" })
fuente
El formato natural en estos días es usar Moment.js.
La forma de obtener el mes en formato de cadena es muy simple en Moment.js sin necesidad de codificar los nombres de los meses en su código: Para obtener el mes y año actuales en formato de nombre de mes y año completo (mayo de 2015):
fuente
Luxon
ydate-fns
, una vez más, hoy en día existe un amplio soporte de navegador para la API de internacionalización .Otra forma de formatear la fecha
fuente
Puede usar 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 navegador y del lado del servidor.
p.ej
Hay más en https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
fuente
Si no desea utilizar una biblioteca externa, o almacenar una matriz de nombres de mes, o si la API de internacionalización ECMAScript no es lo suficientemente buena debido a la compatibilidad del navegador, siempre puede hacerlo de la manera tradicional extrayendo la información del salida de fecha:
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()
regresa y vuelva a calcular sussubstring()
valores en función de eso.fuente
Si está usando jQuery, probablemente también esté usando jQuery UI, lo que significa que puede usar $ .datepicker.formatDate () .
fuente
Mi mejor solución es la siguiente:
fuente
Con momentjs , solo usa la notación de formato .
fuente
moment
es una biblioteca muy grande y exagerada para esto. Las alternativas modernas incluyenLuxon
ydate-fns
, una vez más, hoy en día existe un amplio soporte de navegador para la API de internacionalización .Esto también se puede hacer si está utilizando kendo.
Aquí hay una lista de formateadores del sitio de kendo :
fuente
Simplemente puede usar Date.toLocaleDateString () y analizar la fecha deseada como parámetro
Puedes encontrar más información en la documentación de Firefox
fuente
Si no desea utilizar el momento y desea mostrar el nombre del mes,
fuente
Para mí esta es la mejor solución es,
para TypeScript también
La salida es
fuente
Almacene los nombres en una matriz y busque por el índice del mes.
Método getMonth () de JavaScript
fuente
var month = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
? Mucho más corto que agregarlos individualmente ...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 cuando miro a través de las opciones de Región e Idioma (Windows) me doy cuenta de que las diferentes culturas tienen un orden de formato diferente ... tal vez un mejor patrón de expresión regular podría ser útil.
fuente
Simplemente extendiendo las muchas otras excelentes respuestas, si está utilizando jQuery, podría hacer algo como
donde
date
es igual a lavar d = new Date(somevalue)
. La principal ventaja de esto es por @nickf dijo sobre evitar el espacio de nombres global.fuente
Para obtener una matriz de nombre de mes:
http://jsfiddle.net/polinux/qb346/
fuente
Simplemente escriba un contenedor simple alrededor
toLocaleString
:fuente
Un truco rápido que utilicé que funciona bien:
fuente