Convertendo string ISO 8601 para java.util.Date: melhores práticas
Olá a todos! Sou um desenvolvedor Java iniciante e me deparei com um problema ao fazer parsing de datas. Preciso converter strings no formato ISO 8601 (por exemplo, "2023-10-05T14:30:00Z" ou "2023-10-05T17:30:00+03:00") para um objeto java.util.Date.
O problema é que estou usando SimpleDateFormat, mas ele frequentemente retorna erros ou resultados incorretos. Por exemplo, a string "2023-10-05T14:30:00Z" é parseada incorretamente, e "2023-10-05T17:30:00+03:00" causa uma ParseException. Aqui está meu código:
```java
String dateString = "2023-10-05T14:30:00Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
try {
Date date = sdf.parse(dateString);
System.out.println(date);
} catch (ParseException e) {
e.printStackTrace();
}
```
Entendo que o 'Z' no final indica UTC, mas SimpleDateFormat parece não considerar o fuso horário. Além disso, quando adiciono um offset, como "+03:00", o formato quebra.
Alguém pode me orientar sobre como fazer parsing de strings ISO 8601 corretamente em Java? Talvez exista uma solução pronta...