Java中DateTimeParseException求助:解析带时区时间失败
问题解决:带时区的日期解析错误
错误原因
你的日期字符串2022-12-16T00:00:00+03:00包含时区偏移信息(+03:00),但你使用的LocalDateTime是专门用于不带时区的日期时间类型,它无法识别并解析时区部分,因此抛出DateTimeParseException,提示索引19之后有未解析的文本(也就是+03:00)。
解决方案
改用支持时区的日期时间类(OffsetDateTime或ZonedDateTime)解析字符串,之后再转换为需要的日期格式即可。
修改后的代码
fun formatDateOfReview(dateOfReview: String?): String? { dateOfReview ?: return null // 处理null参数 // 使用OffsetDateTime解析带时区的字符串 val offsetDateTime = OffsetDateTime.parse(dateOfReview) // 转换为LocalDate后,格式化为dd.MM.yyyy return offsetDateTime.toLocalDate().format(DateTimeFormatter.ofPattern("dd.MM.yyyy")) }
补充说明
- 如果API返回的时区格式可能包含时区ID(比如
Europe/Moscow),可以改用ZonedDateTime.parse(dateOfReview)来解析,后续转换逻辑一致。 - 代码中增加了
dateOfReview ?: return null来处理参数为null的情况,避免空指针异常。
内容的提问来源于stack exchange,提问作者Artem
相关产品推荐
相关产品推荐

