Tengo una fecha como una cadena en el siguiente formato "04/02/2011 20:27:05"
. Estoy usando la biblioteca Joda-Time y me gustaría convertirla en DateTime
objeto. Yo hice:
DateTime dt = new DateTime("04/02/2011 20:27:05")
Pero obtengo el siguiente error:
Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"
¿Cómo convertir la fecha anterior en un DateTime
objeto?
java.time
paquete en Java 8, intente usarLocalDateTime.parse
oInstant.parse
.Respuestas:
Uso
DateTimeFormat
:fuente
toString
función, pero no puedo analizar de ella:Invalid format: "31. Januar 2013 06:38:08 MEZ" is malformed at "MEZ"
. ¿Es este un problema conocido? ¿Cómo puedo evitarlo? Saludos.Sé que esta es una pregunta antigua, pero quería agregar que, a partir de JodaTime 2.0, puede hacer esto con una sola línea:
fuente
fuente
De los comentarios elegí una respuesta como y también agregué TimeZone:
fuente
Su formato no es el formato ISO esperado, debe intentar
fuente
También puede usar SimpleDateFormat , como en
DateTimeFormat
fuente
java.util.Date
,java.util.Calendar
yjava.text.SimpleDateFormat
ahora son heredadas , suplantadas por las clases java.time integradas en Java 8 y Java 9. Consulte el Tutorial de Oracle . Y las clases java.time son seguras para subprocesos, a diferencia de las clases heredadas.Necesita un DateTimeFormatter apropiado para el formato que está utilizando. Eche un vistazo a los documentos para obtener instrucciones sobre cómo construir uno.
Fuera del puño, creo que necesitas
format = DateTimeFormat.forPattern("M/d/y H:m:s")
fuente
tl; dr
java.time
El enfoque moderno utiliza las clases java.time que suplantan al venerable Joda-Time proyecto .
Analice como
LocalDateTime
su entrada carece de cualquier indicador de zona horaria o desplazamiento desde UTC.Consejo: Cuando sea posible, use los formatos estándar ISO 8601 al intercambiar valores de fecha y hora como texto en lugar del formato que se ve aquí. Convenientemente, las clases java.time usan los formatos estándar al analizar / generar cadenas.
Sobre java.time
El marco java.time está integrado en Java 8 y versiones posteriores. Estas clases suplantar la vieja problemáticos heredados clases de fecha y hora como
java.util.Date
,Calendar
, ySimpleDateFormat
.El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .
Para obtener más información, consulte el Tutorial de Oracle . Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .
¿Dónde obtener las clases java.time?
El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un campo de pruebas para posibles adiciones futuras a java.time. Usted puede encontrar algunas clases útiles aquí, como
Interval
,YearWeek
,YearQuarter
, y más .fuente
Un metodo simple:
fuente
Hay dos formas en que esto podría lograrse .
DateTimeFormat
SimpleDateFormat
fuente
SimpleDateFormat
es malo .