En JavaScript, ¿cómo puedo formatear un objeto de fecha para imprimir 10-Aug-2010
?
javascript
date
date-formatting
leora
fuente
fuente
myDate.getDay()
no devuelve el día de la semana, sino la ubicación del día de la semana relacionada con la semana.myDate.getDate()
Devuelve el día de la semana actual .Intl.DateTimeFormat
objeto Lo describo en mi publicación: Publicar . Creo una solución en línea para su respuesta porIntl.DateTimeFormat
Check OnlinetoLocaleDateString
Respuestas:
Para formatos de fecha delimitados a medida, debe extraer los componentes de fecha (u hora) de un
DateTimeFormat
objeto (que forma parte de la API de internacionalización ECMAScript ) y luego crear manualmente una cadena con los delimitadores que desee.Para hacer esto, puede usar
DateTimeFormat#formatToParts
:También puede extraer las partes de una
DateTimeFormat
por una usandoDateTimeFormat#format
, pero tenga en cuenta que al usar este método, a partir de marzo de 2020, hay un error en la implementación de ECMAScript cuando se trata de ceros iniciales en minutos y segundos (este error es eludido por el enfoque anterior).Cuando se trabaja con fechas y horas, es por lo general vale la pena utilizar una biblioteca (por ejemplo. Moment.js , luxon ) debido a las muchas complejidades ocultas del campo.
Tenga en cuenta que la API de internacionalización ECMAScript, utilizada en las soluciones anteriores, no es compatible con IE10 ( cuota de mercado global de navegador del 0.03% en febrero de 2020).
fuente
Date
objeto para hacer esto?Si necesita un poco menos de control sobre el formato que la respuesta actualmente aceptada,
Date#toLocaleDateString
puede usarse para crear representaciones estándar específicas de la localidad. Los argumentoslocale
yoptions
permiten que las aplicaciones especifiquen el idioma cuyas convenciones de formato deben usarse, y permiten cierta personalización de la representación.Ejemplos clave de opciones:
la representación del día.
Los valores posibles son "numérico", "2 dígitos".
la representación del día de la semana.
Los valores posibles son "estrecho", "corto", "largo".
La representación del año.
Los valores posibles son "numérico", "2 dígitos".
La representación del mes.
Los valores posibles son "numérico", "2 dígitos", "estrecho", "corto", "largo".
la representación de la hora.
Los valores posibles son "numérico", "2 dígitos".
Los valores posibles son "numérico", "2 dígitos".
La representación del segundo.
Los valores posibles son "numéricos", 2 dígitos ".
Todas estas llaves son opcionales. Puede cambiar el número de valores de opciones según sus requisitos, y esto también reflejará la presencia de cada término de fecha y hora.
Nota: Si solo desea configurar las opciones de contenido, pero aún usa la configuración regional actual, pasar
null
el primer parámetro causará un error. Usar en suundefined
lugar.Para diferentes idiomas:
Puedes usar más opciones de idioma.
Por ejemplo
También puede usar el
toLocaleString()
método para el mismo propósito. La única diferencia es que esta función proporciona el tiempo cuando no pasa ninguna opción.Referencias
toLocaleString()
toLocaleDateString()
fuente
moment.js
para un formato simple. Afortunadamente, hice una búsqueda adicional en Google y descubrí que ya hay una API nativa haciendo esto. Guardado una dependencia externa. ¡Increíble!undefined
como el primer parámetro de configuración regional se siente arbitrario, puede pasar el valor"default"
para utilizar la configuración regional del navegador, según los documentos de MDN developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…date.toLocaleDateString("en-US", { day: 'numeric' }) + "-"+ date.toLocaleDateString("en-US", { month: 'short' }) + "-" + date.toLocaleDateString("en-US", { year: 'numeric' })
debería dar16-Nov-2019
Use la biblioteca date.format :
devoluciones:
formato de fecha en npm
http://jsfiddle.net/phZr7/1/
fuente
require is not defined
Si es necesario formatear rápidamente su fecha usando JavaScript llanura, uso
getDate
,getMonth + 1
,getFullYear
,getHours
ygetMinutes
:O, si necesita que se rellene con ceros:
fuente
toLocaleDateString()
puede dar formato a la fecha con nombres mes / día localizadas..toString().padStart(2, '0')
("000" + d.getFullYear()).slice(-4)
String.padStart()
solo está disponible en ECMAScript 2017.Bueno, lo que quería era convertir la fecha de hoy en una cadena de fecha amigable con MySQL como 2012-06-23, y usar esa cadena como parámetro en una de mis consultas. La solución simple que he encontrado es esta:
Tenga en cuenta que la solución anterior no tiene en cuenta el desplazamiento de su zona horaria.
Puede considerar usar esta función en su lugar:
Esto le dará la fecha correcta en caso de que esté ejecutando este código alrededor del inicio / final del día.
fuente
new Date(date + " UTC")
para engañar a la zona horaria, y puede eliminar la línea setMinutes. Hombre, JavaScript está suciovar today = new Date().toISOString().slice(0,-14)
:)new Date().toISOString().split('T')[0]
new Date().toISOString().slice(0, 16).replace('T',' ')
incluir tiempoFunción de formato personalizado:
Para formatos fijos, una función simple hace el trabajo. El siguiente ejemplo genera el formato internacional AAAA-MM-DD:
El formato OP se puede generar como:
Nota: Sin embargo, generalmente no es una buena idea extender las bibliotecas estándar de JavaScript (por ejemplo, agregando esta función al prototipo de Fecha).
Una función más avanzada podría generar resultados configurables basados en un parámetro de formato.
Si escribir una función de formato es demasiado largo, hay muchas bibliotecas alrededor de las cuales lo hace. Algunas otras respuestas ya las enumeran. Pero el aumento de las dependencias también tiene su contrapartida.
Funciones de formato estándar ECMAScript:
Desde versiones más recientes de ECMAScript, la
Date
clase tiene algunas funciones de formato específicas:Nota: es posible generar resultados personalizados a partir de esos formatos>
Fragmentos de ejemplos:
fuente
new Date().toLocaleDateString()
mm/dd/yyyy
no te da pordd/mm/yyyy
favor corrige eso.Si ya está utilizando jQuery UI en su proyecto, puede hacerlo de esta manera:
Aquí están disponibles algunas opciones de formato de fecha de selector de fecha para jugar .
fuente
Creo que puedes usar el método de fecha no estándar
toLocaleFormat(formatString)
formatString: una cadena de formato en el mismo formato esperado por la
strftime()
función en C.Referencias
fuente
Plain JavaScript es la mejor opción para pequeños onetímeros.
Por otro lado, si necesita más cosas de citas , MomentJS es una gran solución.
Por ejemplo:
fuente
YYYY
menos que sepa la diferencia entreYYYY
yyyyy
: stackoverflow.com/questions/15133549/…YYYY
(noyyyy
) es el año estándar yGGGG
(noYYYY
) es el año basado en la semana ISO.En los navegadores modernos (*) , puede hacer esto:
Salida si se ejecuta hoy (24 de enero de 2016):
(*) Según MDN , "navegadores modernos" significa Chrome 24+, Firefox 29+, Internet Explorer 11, Edge 12+, Opera 15+ y Safari de compilación nocturna .
fuente
Usted debe echar un vistazo a date.js . Agrega muchos ayudantes convenientes para trabajar con fechas, por ejemplo, en su caso:
Primeros pasos: http://www.datejs.com/2007/11/27/getting-started-with-datejs/
fuente
Puedo obtener el formato solicitado en una línea sin bibliotecas ni métodos de fecha, solo expresiones regulares:
En mis pruebas, esto funciona de manera confiable en los principales navegadores (Chrome, Safari, Firefox e IE). Como señaló @RobG, la salida de Date.prototype.toString () depende de la implementación, así que solo pruebe la salida para asegurarse funciona directamente en tu motor de JavaScript. Incluso puede agregar algo de código para probar el resultado de la cadena y asegurarse de que coincida con lo que espera antes de reemplazar la expresión regular.
fuente
console.log(new Date().toString().replace(/\S+\s(\S+)\s(\d+)\s(\d+)\s.*/,'$2-$1-$3'));
@ Sébastien: soporte alternativo para todos los navegadores
Documentación: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleDateString
fuente
new Date().toLocaleDateString("en-EN", {month: "short", weekday: "short", day: "2-digit", year: "numeric"})
vuelve"Wed, Sep 06, 2017"
OK , tenemos algo llamado Intl que es muy útil para formatear una fecha en JavaScript en estos días:
Su fecha de la siguiente manera:
Y cambia a Fecha usando nueva Fecha () como a continuación:
Y ahora puede formatearlo de la forma que desee utilizando una lista de configuraciones regionales como la siguiente:
Si desea exactamente el formato que mencionó anteriormente, puede hacer:
Y el resultado será:
Para obtener más información, consulte la API Intl y la documentación Intl.DateTimeFormat .
fuente
Usando una plantilla de cadena ECMAScript Edition 6 (ES6 / ES2015):
Si necesita cambiar los delimitadores:
fuente
Solución empaquetada: Luxon
Si desea utilizar una solución única para todos, le recomiendo utilizar Luxon (una versión modernizada de Moment.js ) que también formatea en muchos entornos locales / idiomas y toneladas de otras características.
Luxon está alojado en el sitio web Moment.js y desarrollado por un desarrollador de Moment.js porque Moment.js tiene limitaciones que el desarrollador quería abordar pero no pudo.
Instalar:
npm install luxon
oyarn add luxon
(visite el enlace para otros métodos de instalación)Ejemplo:
luxon.DateTime.fromISO('2010-08-10').toFormat('yyyy-LLL-dd');
Rendimientos:
Solución manual
Utilizando un formato similar a Moment.js, Class DateTimeFormatter (Java) y Class SimpleDateFormat (Java) , implementé una solución integral
formatDate(date, patternStr)
donde el código es fácil de leer y modificar. Puede mostrar la fecha, hora, AM / PM, etc. Consulte el código para obtener más ejemplos.Ejemplo:
formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss:S')
(
formatDate
se implementa en el fragmento de código a continuación)Rendimientos:
Pruebe el código haciendo clic en "Ejecutar fragmento de código".
Patrones de fecha y hora
yy
= Año de 2 dígitos;yyyy
= año completoM
= mes de dígitos;MM
= Mes de 2 dígitos;MMM
= nombre corto del mes;MMMM
= nombre completo del mesEEEE
= nombre completo del día de la semana;EEE
= nombre corto entre semanad
= día de dígitos;dd
= Día de 2 dígitosh
= horas am / pm;hh
= Horas de 2 dígitos am / pm;H
= horas;HH
= Horas de 2 dígitosm
= minutos;mm
= Minutos de 2 dígitos;aaa
= AM / PMs
= segundos;ss
= Segundos de 2 dígitosS
= milisegundosGracias @Gerry por mencionar a Luxon.
fuente
SimpleDateFormat
clase problemática fue suplantada hace años por lajava.time.format.DateTimeFormatter
clase.Aquí hay un código que acabo de escribir para manejar el formato de fecha para un proyecto en el que estoy trabajando. Imita la funcionalidad de formato de fecha PHP para satisfacer mis necesidades. Siéntase libre de usarlo, solo está extendiendo el objeto Date () ya existente. Puede que esta no sea la solución más elegante, pero está funcionando para mis necesidades.
fuente
Una solución de JavaScript sin usar bibliotecas externas:
fuente
Más documentación en developer.mozilla.org
fuente
Si está utilizando jQuery UI en su código, hay una función incorporada llamada
formatDate()
. Lo estoy usando de esta manera para formatear la fecha de hoy:Puede ver muchos otros ejemplos de fecha de formato en la documentación de jQuery UI .
fuente
Tenemos muchas soluciones para esto, pero creo que la mejor de ellas es Moment.js. Así que personalmente sugiero usar Moment.js para operaciones de fecha y hora.
fuente
Una forma útil y flexible para formatear DateTimes en JavaScript es
Intl.DateTimeFormat
:El resultado es:
"12-Oct-2017"
Los formatos de fecha y hora se pueden personalizar utilizando el argumento de opciones.
El
Intl.DateTimeFormat
objeto es un constructor de objetos que permite el formato de fecha y hora sensible al lenguaje.Sintaxis
Parámetros
locales
Opcional. Una cadena con una etiqueta de idioma BCP 47, o una matriz de tales cadenas. Para ver la forma general y la interpretación del argumento de las configuraciones regionales, consulte la página Intl. Se permiten las siguientes claves de extensión Unicode:
Opciones
Opcional. Un objeto con algunas o todas las siguientes propiedades:
localeMatcher
El algoritmo de coincidencia de la configuración regional a utilizar. Los valores posibles son
"lookup"
y"best fit"
; el valor predeterminado es"best fit"
. Para obtener información sobre esta opción, consulte la página Intl.zona horaria
La zona horaria a utilizar. El único valor que las implementaciones deben reconocer es
"UTC"
; el valor predeterminado es la zona horaria predeterminada del tiempo de ejecución. Implementaciones también pueden reconocer los nombres zona horaria de la base de datos de zona horaria IANA, tales como"Asia/Shanghai"
,"Asia/Kolkata"
,"America/New_York"
.hora12
Si se debe usar el tiempo de 12 horas (en oposición al tiempo de 24 horas). Los valores posibles son
true
yfalse
; el valor predeterminado depende de la configuración regional.formatMatcher
El algoritmo de coincidencia de formato a utilizar. Los valores posibles son
"basic"
y"best fit"
; el valor predeterminado es"best fit"
. Consulte los siguientes párrafos para obtener información sobre el uso de esta propiedad.Las siguientes propiedades describen los componentes de fecha y hora para usar en la salida formateada y sus representaciones deseadas. Se requieren implementaciones para admitir al menos los siguientes subconjuntos:
Las implementaciones pueden admitir otros subconjuntos, y las solicitudes se negociarán con todas las combinaciones de representación de subconjuntos disponibles para encontrar la mejor coincidencia. Hay dos algoritmos disponibles para esta negociación y seleccionados por la propiedad formatMatcher: una especificada completamente
"basic"
algoritmo y un algoritmo de "mejor ajuste" dependiente de la implementación.día laborable
La representación del día de la semana. Los valores posibles son
"narrow"
,"short"
,"long"
.era
La representación de la época. Los valores posibles son
"narrow"
,"short"
,"long"
.año
La representación del año. Los valores posibles son
"numeric"
,"2-digit"
.mes
La representación del mes. Los valores posibles son
"numeric"
,"2-digit"
,"narrow"
,"short"
,"long"
.día
La representación del día. Los valores posibles son
"numeric"
,"2-digit"
.hora
La representación de la hora. Los valores posibles son
"numeric"
,"2-digit"
.minuto
La representación del minuto. Los valores posibles son
"numeric"
,"2-digit"
.segundo
La representación del segundo. Los valores posibles son
"numeric"
,"2-digit"
.timeZoneName
La representación del nombre de la zona horaria. Los valores posibles son
"short"
,"long"
. El valor predeterminado para cada propiedad de componente de fecha y hora es indefinido, pero si todas las propiedades de componente son indefinidas, se supone que el año, mes y día son"numeric"
.Revisa en linea
Más detalles
fuente
Esto puede ayudar con el problema:
fuente
d.toLocaleDateString('en-US', options);
si estás en los Estados Unidos.Así es como lo implementé para mis complementos npm
fuente
March
se convertirá3arch
con este código.'M'
aformat = format.replace("M(?!M)", (dt.getMonth()+1).toString());
y póngala por encima de la línea con'MMMM'
fuente
Sugar.js tiene excelentes extensiones para el objeto Date, incluido un Date.format método .
Ejemplos de la documentación:
fuente
Para cualquiera que busque una solución ES6 realmente simple para copiar, pegar y adoptar:
fuente
A partir de 2019, parece que puede llegar a LocaleDateString para devolver solo ciertas partes y luego puede unirse a ellas como lo desee:
fuente
Deberías echar un vistazo a DayJs Es un remake de momentJs pero una arquitectura modular orientada de manera más ligera.
Alternativa rápida de 2kB a Moment.js con la misma API moderna
fuente
Para obtener "10-Ago-2010", intente:
Para compatibilidad con el navegador, consulte toLocaleDateString .
fuente