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

Java计算两个日期天数差时触发ParseException问题排查

问题排查与解决方案

嘿,我一眼就揪出了导致ParseException的两个核心问题,咱们一步步来解决:

错误点分析

  • 日期分隔符不匹配:你定义的SimpleDateFormat格式是"dd-mm-yyyy"(用横杠-分隔),但实际传入的日期字符串是用斜杠/分隔的(比如"11/11/2020"),格式不匹配直接触发了解析异常。
  • 模式字母混淆:格式里的小写mm代表的是分钟,而不是月份!表示月份的正确模式是大写的MM,这也是导致解析失败的关键原因之一。

修正后的传统API版本

先给你修复好基于SimpleDateFormat的代码:

import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.concurrent.TimeUnit;

public class Main {
    public static void main(String[] args) {
        String date1 = "11/11/2020";
        String date2 = "13/11/2020";
        try {
            // 修正:用MM表示月份,分隔符改为/匹配输入字符串
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
            Date date_1 = dateFormat.parse(date1);
            Date date_2 = dateFormat.parse(date2);
            System.out.println(date_1);
            System.out.println(date_2);
            long numberOfDays = date_2.getTime() - date_1.getTime();
            numberOfDays = TimeUnit.DAYS.convert(numberOfDays, TimeUnit.MILLISECONDS);
            System.out.println(numberOfDays);
        } catch (ParseException ex) {
            ex.printStackTrace(); // 建议打印异常栈,方便排查更细节的问题
        }
    }
}

更推荐的Java 8+新日期API方案

SimpleDateFormat是线程不安全的,而且API设计偏老旧,推荐使用Java 8引入的java.time日期API,代码更简洁且不易出错:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;

public class Main {
    public static void main(String[] args) {
        String date1 = "11/11/2020";
        String date2 = "13/11/2020";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        LocalDate localDate1 = LocalDate.parse(date1, formatter);
        LocalDate localDate2 = LocalDate.parse(date2, formatter);
        // 直接计算天数差,无需手动处理毫秒
        long daysDiff = ChronoUnit.DAYS.between(localDate1, localDate2);
        System.out.println(daysDiff);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:09:09