Kotlin调用LocalDate.parse解析日期触发DateTimeParseException如何解决
报错原因
- 格式不匹配是核心问题:你定义的
DateTimeFormatter规则yyyy-MM-dd HH:mm:ss要求待解析字符串必须包含「四位年份-两位月份-两位日期 两位小时:两位分钟:两位秒」完整的日期+时间结构,但你实际传入的待解析字符串只有日期部分,完全没有时间字段,因此解析到对应位置时触发规则冲突。 - 若你代码中实际使用的待解析字符串是
25-10-2021这类「日-月-年」顺序的格式,还额外存在日期顺序和pattern要求的「年-月-日」不匹配的问题,也会导致解析失败。
错误日志提示
Text '2019-12-22' could not be parsed at index 5就是格式规则和输入文本不匹配的典型报错。
解决办法
根据你实际使用的待解析字符串格式选择对应方案即可:
- 场景1:待解析字符串为「年-月-日」格式(如错误日志中的
2019-12-22)
调整pattern和字符串格式匹配,修改后代码如下:val timestampAsDateString = "2019-12-22" val format = DateTimeFormatter.ofPattern("yyyy-MM-dd") val date = LocalDate.parse(timestampAsDateString, format) Log.d("parseTesting","Date : ${date}") - 场景2:待解析字符串为「日-月-年」格式(如你代码示例中的
25-10-2021)
调整pattern的字段顺序和输入匹配,修改后代码如下:val timestampAsDateString = "25-10-2021" val format = DateTimeFormatter.ofPattern("dd-MM-yyyy") val date = LocalDate.parse(timestampAsDateString, format) Log.d("parseTesting","Date : ${date}") - 附加需求:如果需要将解析后的日期输出为
yyyy-MM-dd HH:mm:ss格式,可在解析完成后补全时间字段再格式化:val fullTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") // 补全为当天0点的时间结构后格式化 val fullTimeStr = date.atStartOfDay().format(fullTimeFormatter) Log.d("parseTesting","Full DateTime : ${fullTimeStr}")
内容的提问来源于stack exchange,提问作者Jaanu
相关产品推荐
相关产品推荐

