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

DateTimeFormatter解析秒与毫秒均为0的时间字符串异常问题

问题解析与解决方案

这其实不是解析异常,而是LocalDateTime默认的toString()方法的显示逻辑导致的——它会自动省略末尾连续的零值时间部分,让输出更简洁,但实际上你解析出来的LocalDateTime对象已经正确包含了秒和毫秒的0值。

验证解析结果是否正确

你可以通过获取具体字段值来确认:

DateTimeFormatter dtformatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
LocalDateTime dt = LocalDateTime.parse("20180301091600000", dtformatter);

// 打印秒和纳秒(毫秒转纳秒,0毫秒对应0纳秒)
System.out.println(dt.getSecond()); // 输出:0
System.out.println(dt.getNano());  // 输出:0

可以看到,秒和毫秒(纳秒)的0值已经被正确解析并存储了。

如何输出完整的时间格式

如果需要显示成2018-03-01T09:16:00.000这种完整格式,不要依赖默认的toString(),而是用自定义的DateTimeFormatter来格式化输出:

DateTimeFormatter dtformatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
LocalDateTime dt = LocalDateTime.parse("20180301091600000", dtformatter);

// 定义你想要的完整输出格式
DateTimeFormatter fullDisplayFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSS");
System.out.println(fullDisplayFormatter.format(dt)); // 输出:2018-03-01T09:16:00.000

或者如果你想输出和输入格式一致的字符串,直接用原来的dtformatter格式化即可:

System.out.println(dtformatter.format(dt)); // 输出:20180301091600000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:44:37