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

如何判断dd.MM.yyyy格式的字符串日期是否为未来日期?

判断dd.MM.yyyy格式日期是否为未来日期的解决方案

首先说一句,别再用SimpleDateFormat和Date类了——这俩是Java老掉牙的日期API,线程不安全还设计反人类,坑特别多。直接用Java 8及以上版本自带的java.time包,用LocalDate和DateTimeFormatter处理,简单又靠谱。

步骤和代码:

  1. 用DateTimeFormatter定义dd.MM.yyyy的格式,把字符串转成LocalDate(只存年月日,没有时间,正好符合你的需求)。
  2. 获取当前日期的LocalDate对象。
  3. 调用isAfter()方法直接判断目标日期是否在当前日期之后(也就是你要的“今日之后,含明日及以后”)。

完整代码:

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

// 示例代码
String profileUpdateChangeDate = "31.01.2023";
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
// 把字符串解析成LocalDate
LocalDate changeDate = LocalDate.parse(profileUpdateChangeDate, formatter);
// 获取当前日期(自动忽略时分秒)
LocalDate currentDate = LocalDate.now();

// 判断是否为未来日期:changeDate在currentDate之后就是符合要求的
boolean isFutureDate = changeDate.isAfter(currentDate);

// 打印日志
_log.info("changeDate====>>> " + changeDate);
_log.info("Currentdate-====> " + currentDate);
_log.info("是否为未来日期:" + isFutureDate);

要是你非得用旧API(真心不推荐):

如果因为环境限制只能用SimpleDateFormat和Date,得注意一个坑:你解析出来的changeDate时间是当日00:00:00,但new Date()拿的是当前精确时间(比如下午3点),直接比较的话,今天的日期会被当成“非未来”,但其实如果目标日期是今天的话,你的需求是不算的(要今日之后)。所以得把当前日期也转成当日0点的Date再比。

代码示例:

import java.text.SimpleDateFormat;
import java.util.Date;

String profileUpdateChangeDate = "31.01.2023";
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
Date changeDate = sdf.parse(profileUpdateChangeDate);
// 把当前日期转成当日0点的Date对象
Date currentDate = sdf.parse(sdf.format(new Date()));

// 判断:changeDate晚于当前0点,就是未来日期
boolean isFutureDate = changeDate.after(currentDate);

_log.info("changeDate====>>> " + changeDate);
_log.info("Currentdate-====> " + sdf.format(currentDate));
_log.info("是否为未来日期:" + isFutureDate);

关于你看到的日期格式问题:

你打印changeDate时显示的EEE MMM dd HH:mm:ss zzz yyyy,只是Date类默认的toString()输出格式,不影响日期的实际值,只要你解析时用对了dd.MM.yyyy格式,日期的内部值是正确的,只是打印出来的样子不一样而已。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:15:41