Eu tenho uma data como uma string no seguinte formato "04/02/2011 20:27:05"
. Estou usando a biblioteca Joda-Time e gostaria de convertê-la em DateTime
objeto. Eu fiz:
DateTime dt = new DateTime("04/02/2011 20:27:05")
Mas estou recebendo o seguinte erro:
Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"
Como converter a data acima em um DateTime
objeto?
java.time
pacote no Java 8, tente usarLocalDateTime.parse
ouInstant.parse
.Respostas:
Use
DateTimeFormat
:fonte
toString
função, mas eu não posso analisar a partir dele:Invalid format: "31. Januar 2013 06:38:08 MEZ" is malformed at "MEZ"
. Isto é um problema conhecido? Como posso evitá-lo? Saudações.Sei que essa é uma pergunta antiga, mas eu gostaria de acrescentar que, a partir do JodaTime 2.0, você pode fazer isso com uma única linha:
fonte
fonte
Dos comentários, escolhi uma resposta como e também adicionei o TimeZone:
fonte
Seu formato não é o formato ISO esperado, você deve tentar
fonte
Você também pode usar SimpleDateFormat , como em
DateTimeFormat
fonte
java.util.Date
,java.util.Calendar
ejava.text.SimpleDateFormat
estão agora legado , suplantado pelos java.time classes internas em Java 8 & Java 9. Consulte Tutorial pela Oracle . E as classes java.time são seguras para threads, ao contrário das classes herdadas.Você precisa de um DateTimeFormatter apropriado ao formato que está usando. Dê uma olhada nos documentos para obter instruções sobre como criar um.
Fora do manguito, acho que você precisa
format = DateTimeFormat.forPattern("M/d/y H:m:s")
fonte
tl; dr
java.time
A abordagem moderna usa as classes java.time que substituem o venerável projeto Joda-Time .
Analise como a
LocalDateTime
como sua entrada não possui nenhum indicador de fuso horário ou deslocamento do UTC.Dica: Sempre que possível, use os formatos ISO 8601 padrão ao trocar valores de data e hora como texto, em vez do formato visto aqui. Convenientemente, as classes java.time usam os formatos padrão ao analisar / gerar strings.
Sobre java.time
A estrutura java.time é integrada ao Java 8 e posterior. Essas classes suplantar os velhos problemáticos legados aulas de data e hora, como
java.util.Date
,Calendar
, eSimpleDateFormat
.O projeto Joda-Time , agora em modo de manutenção , aconselha a migração para as classes java.time .
Para saber mais, consulte o Tutorial do Oracle . E procure Stack Overflow para muitos exemplos e explicações. A especificação é JSR 310 .
Onde obter as classes java.time?
O projeto ThreeTen-Extra estende o java.time com classes adicionais. Este projeto é um campo de prova para possíveis adições futuras ao java.time. Você pode encontrar algumas classes úteis aqui, como
Interval
,YearWeek
,YearQuarter
, e mais .fonte
Um método simples:
fonte
Há duas maneiras isso pode ser alcançado .
DateTimeFormat
SimpleDateFormat
fonte
SimpleDateFormat
é ruim na minha opinião mais honesta.