You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:45:03