Avatar ·

将ISO 8601字符串转换为java.util.Date:最佳实践

大家好!我是一名Java初学者,在解析日期时遇到了问题。我需要将ISO 8601格式的字符串(例如"2023-10-05T14:30:00Z"或"2023-10-05T17:30:00+03:00")转换为java.util.Date对象。 问题在于,我使用SimpleDateFormat时经常出错或得到错误结果。例如,字符串"2023-10-05T14:30:00Z"解析不正确,而"2023-10-05T17:30:00+03:00"直接抛出ParseException。这是我的代码: ```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(); } ``` 我明白末尾的'Z'表示UTC,但SimpleDateFormat似乎没有考虑时区。另外,当我添加偏移量(例如"+03:00")时,格式就乱了。 请问如何正确解析Java中的ISO 8601字符串?也许有现成的