¿Cómo puedo convertir una cadena en un objeto de fecha y hora en JavaScript especificando una cadena de formato?
Estoy buscando algo como:
var dateTime = convertToDateTime("23.11.2009 12:34:56", "dd.MM.yyyy HH:mm:ss");
javascript
datetime
type-conversion
Serhat Ozgel
fuente
fuente
Respuestas:
Creo que esto puede ayudarte: http://www.mattkruse.com/javascript/date/
Hay una
getDateFromFormat()
función que puede ajustar un poco para resolver su problema.Actualización: hay una versión actualizada de las muestras disponibles en javascripttoolbox.com
fuente
TypeError: Object Date has no method 'getDateFromFormat'
Úselo si su cadena es compatible con . Si su formato es incompatible (creo que lo es), debe analizar la cadena usted mismo (debería ser fácil con expresiones regulares) y crear un nuevo objeto Date con valores explícitos para año, mes, fecha, hora, minuto y segundo.
new Date(dateString)
Date.parse()
fuente
@ Christoph menciona el uso de una expresión regular para abordar el problema. Esto es lo que estoy usando:
De ninguna manera es inteligente, solo configure la expresión regular y se
new Date(blah)
adapte a sus necesidades.Editar: Tal vez un poco más comprensible en ES6 usando la desestructuración:
Pero con toda honestidad en estos días alcanzo algo como Momento
fuente
/g
bandera, sólo para conjuntolastIndex
de0
después? Simplemente no uses una coincidencia global./g
fue una copia / pegado descuidada de un proyecto existente.lastindex
fue agregado por un editor (para combatir el\g
supongo?). Los eliminaré ahora. Gracias por señalar eso.No existen rutinas sofisticadas de formato de fecha / hora en JavaScript.
Tendrá que usar una biblioteca externa para la salida de fecha formateada, "Formato de fecha JavaScript" de Flagrant Badassery parece muy prometedor.
Para la conversión de entrada, ya se han hecho varias sugerencias. :)
fuente
Echa un vistazo a Moment.js . Es una biblioteca moderna y poderosa que compensa las lamentables funciones de fecha de JavaScript (o la falta de ellas).
fuente
Solo para obtener una respuesta actualizada aquí, hay una buena js lib en http://www.datejs.com/
fuente
fuente
La biblioteca externa es una exageración para analizar una o dos fechas, así que hice mi propia función usando las soluciones de Oli y Christoph . Aquí en Europa central raramente usamos algo más que el formato OP, por lo que esto debería ser suficiente para aplicaciones simples utilizadas aquí.
fuente
Date.parse()
es bastante inteligente pero no puedo garantizar que el formato se analice correctamente.Si no es así, tendrías que encontrar algo para unir los dos. Su ejemplo es bastante simple (siendo puramente números), por lo que un toque de REGEX (o incluso
string.split()
, podría ser más rápido) emparejado con algunosparseInt()
le permitirá hacer una cita rápidamente.fuente
fuente
Solo para dar mis 5 centavos.
Mi formato de fecha es dd.mm.aaaa (formato del Reino Unido) y ninguno de los ejemplos anteriores funcionaba para mí. Todos los analizadores consideraban mm como día y dd como mes.
Encontré esta biblioteca: http://joey.mazzarelli.com/2008/11/25/easy-date-parsing-with-javascript/ y funcionó, porque puedes decir el orden de los campos de esta manera:
Espero que ayude a alguien.
fuente
Moment.js se encargará de esto:
fuente
Puede usar la biblioteca moment.js para esto. Estoy usando solo para obtener resultados específicos de tiempo, pero puede seleccionar qué tipo de formato desea seleccionar.
Referencia:
1. biblioteca de momentos: https://momentjs.com/
2. funciones específicas de hora y fecha: https://timestamp.online/article/how-to-convert-timestamp-to-datetime-in-javascript
y puedes llamar a este método como:
Espero que ayude. Disfruta codificando.
fuente
Para satisfacer completamente el Date.parse, convierta la cadena al formato dd-mm-AAAA como se especifica en RFC822, si usa aaaa-mm-dd, el análisis puede cometer errores.
fuente
fuente