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

Java字符串转LocalDateTime报DateTimeParseException及日期加3个月问题求解

错误原因&修复方案

核心错误点

  • 日期格式的分隔符不匹配:输入字符串用/分隔年月日,你定义的格式化模式使用了-,导致解析到索引2位置时识别失败,直接抛出异常。
  • 直接解析纯日期字符串为LocalDateTime:LocalDateTime必须包含日期、时间两部分信息,你的输入仅提供了年月日,缺少时分秒字段,就算修复分隔符问题也会继续抛出解析异常。
  • 未接收时间运算的返回值:Java 8提供的java.time包下所有时间类都是不可变类,调用plusXXX、minusXXX方法都不会修改原对象,只会返回一个全新的时间对象,你原有代码调用plusMonths后没有赋值给新变量,最终打印的还是原日期。

修复后完整代码

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateConvertDemo {
    public static void main(String[] args) {
        String dateStr = "13/11/2020";
        // 修正格式化模式,和输入字符串分隔符保持一致
        DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        // 先解析纯日期为LocalDate
        LocalDate originDate = LocalDate.parse(dateStr, dateFormatter);
        // 转换为LocalDateTime,此处默认补0时0分0秒,也可按需指定具体时间
        LocalDateTime originDateTime = originDate.atStartOfDay();
        // 接收加3个月后的新时间对象
        LocalDateTime resultDateTime = originDateTime.plusMonths(3);
        // 按要求格式输出结果
        System.out.println(resultDateTime.format(dateFormatter));
    }
}

运行结果

输出内容为:13/02/2021,符合需求。

内容的提问来源于stack exchange,提问作者Khanh Van Luong

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:27:03