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

Java如何解析mm:ss.S格式字符串为LocalTime,出现解析异常如何处理

解析mm:ss.S格式字符串为LocalTime的解决方案

错误原因

LocalTime 构造要求必须包含小时字段,你使用的mm:ss.S格式仅包含分钟、秒、毫秒三个字段,缺失小时值,因此解析时抛出无法构造LocalTime的异常。

解决方案

方案1:为格式化器配置默认小时值(推荐,无需修改输入字符串)

通过DateTimeFormatterBuilder给缺失的小时字段设置默认值0,即可正常解析:

import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.temporal.ChronoField;

public static LocalTime parseTime(String time) {
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
            .appendPattern("mm:ss.S")
            // 配置默认小时为0,代表当天0点的分秒时间
            .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
            .toFormatter();
    return LocalTime.parse(time, formatter);
}

测试用例:输入"10:38.2"会被解析为00:10:38.200,符合预期。

方案2:业务为时长场景时使用Duration类型

如果你的字符串本质是代表时长而非当天时间(比如可能出现分钟超过59的情况,例如"62:15.3"代表62分15.3秒),则使用Duration类型更合理,解析方式如下:

import java.time.Duration;

public static Duration parseDuration(String time) {
    // 转换为Duration支持的ISO 8601格式:PTxMyS
    String isoDuration = "PT" + time.replace(':', 'M') + "S";
    return Duration.parse(isoDuration);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:02