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

解析CSV中mm:ss格式时间报java.time.format.DateTimeParseException如何解决

异常问题排查与解决

错误根源

你错误使用了LocalDateTime类型解析赛事时长:
LocalDateTime是用于表示具体的日期时间点的类型,必须包含年、月、日、时、分、秒的完整时间点信息。而你要解析的30:27只有分钟和秒两个字段,缺少年、月、日、小时等必填字段,因此无法完成转换抛出解析异常。

解决方案

根据业务场景选择以下两种方案即可:

方案1:时长不超过1小时,用LocalTime存储

如果滑雪赛事时长不会超过1小时(即分钟数不会超过59),可以用表示一天内时间的LocalTime替代LocalDateTime:

  1. 先修改Athlete类中skiTimeResults字段的类型,从LocalDateTime改为LocalTime
  2. 修改解析代码:
LocalTime skiTimeResults = LocalTime.parse(athleteAttributes[3].trim(),
        DateTimeFormatter.ofPattern("mm:ss"));

LocalTime会自动补0作为小时值,可正常解析mm:ss格式的内容。

方案2:时长可能超过1小时,用Duration存储(更推荐)

如果时长可能超过1小时(会出现72:15这类分钟数大于60的格式),使用Java 8专门的时长类型Duration存储是最规范的做法:

  1. 先修改Athlete类中skiTimeResults字段的类型,从LocalDateTime改为Duration
  2. 修改解析代码:
String[] timeParts = athleteAttributes[3].trim().split(":");
int minutes = Integer.parseInt(timeParts[0]);
int seconds = Integer.parseInt(timeParts[1]);
Duration skiTimeResults = Duration.ofMinutes(minutes).plusSeconds(seconds);

该方案后续计算总时长、时长排序等操作都有原生API支持,不会出现溢出问题。


内容的提问来源于stack exchange,提问作者Darius Boengiu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:54:03