我想将字符串日期 (dd.MM.yyyy) 与当前日期进行比较?

问题描述 投票:0回答:2

我有一个字符串日期,格式为 dd.MM.yyyy。我想比较是否是未来的日期(今天+1天)

我正在尝试将字符串转换为日期并从

SimpleDateFormat
获取当前日期,但是当尝试转换字符串日期时,我得到“EEE MMM dd HH:mm:ss zzz yyyy”格式的输出。

String profileUpdateChangeDate = "31.01.2023"
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        Date changeDate = sdf.parse(profileUpdateChangeDate);
        _log.info("changeDate===>>>"+changeDate);
        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
        String str = formatter.format(date);
        _log.info("Currentdate-===>"+str);

如何检查

profileUpdateChangeDate
是否是未来的日期?

java date java-8
2个回答
4
投票

您应该使用新的 java.time 类,所以:

    String profileUpdateChangeDate = "31.01.2023";
    DateTimeFormatter df = DateTimeFormatter.ofPattern("dd.MM.yyyy");
    LocalDate changeDate = LocalDate.parse(profileUpdateChangeDate, df);
    LocalDate date = LocalDate.now();
    System.out.printf("Is date %s in the future? %b%n", profileUpdateChangeDate, date.isBefore(changeDate));

1
投票

您可以将解析的日期“changeDate”与当前日期进行比较。如果“changeDate”在当前日期之后,则它是未来日期。

String profileUpdateChangeDate = "31.01.2023";
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
Date changeDate = sdf.parse(profileUpdateChangeDate);
Date currentDate = new Date();
    
if (changeDate.after(currentDate)) {
    System.out.println("profileUpdateChangeDate is a future date");
} else {
    System.out.println("profileUpdateChangeDate is not a future date");
}
© www.soinside.com 2019 - 2024. All rights reserved.