Convertendo String compatível com ISO 8601 para java.util.Date
Estou tentando converter umISO 8601 String formatada para umjava.util.Date
.
Eu encontrei o padrãoyyyy-MM-dd'T'HH:mm:ssZ
para ser compatível com ISO8601 se usado com uma localidade (comparar amostra).
No entanto, usando ojava.text.SimpleDateFormat
, Não consigo converter a String formatada corretamente2010-01-01T12:00:00+01:00
. Eu tenho que convertê-lo primeiro para2010-01-01T12:00:00+0100
, sem os dois pontos.
Então, a solução atual é
SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.GERMANY);
String date = "2010-01-01T12:00:00+01:00".replaceAll("\\+0([0-9]){1}\\:00", "+0$100");
System.out.println(ISO8601DATEFORMAT.parse(date));
o que obviamente não é legal. Estou faltando alguma coisa ou há uma solução melhor?
Responda
Graças ao comentário de JuanZe, encontrei oJoda-Time magia também édescrito aqui.
Então, a solução é
DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
String jtdate = "2010-01-01T12:00:00+01:00";
System.out.println(parser2.parseDateTime(jtdate));
Ou, mais simplesmente, use o analisador padrão por meio do construtor:
DateTime dt = new DateTime( "2010-01-01T12:00:00+01:00" ) ;
Para mim, isso é legal.