如何检查用户输入的日期距离 java 中的当前日期已超过 32 天

How to check user entered date is greater than 32 days from current date in java

我想根据条件验证用户输入的日期。条件是用户输入的新日期应大于 32 天。如何做同样的事情?我尝试了以下方法,但它不起作用。

final Date getuserDate = validate.date();
logger.debug("UserDate is" + getuserDate);
DateTime currentExpdelDate = new DateTime(getuserDate);
DateTime currentDate = new DateTime();

DateTime dtPlus = currentDate.plusDays(32);
long millisec = dtPlus.getMillis() - currentExpdelDate.getMillis();
if (millisec > 0) {
    long diffDays = millisec / (24 * 60 * 60 * 1000);
    if (diffDays < 32) {

        System.out.println("Date should be greater than 32 days")
    }
}

通用类型DateTime不适合日期任务。因此,您应该在 Joda-Time-library 中选择类型 LocalDate

那你就可以用这个了constructor。请注意,您需要指定时区,因为当前日期与世界各地的同一时间不同。

java.util.Date input = ...;
DateTimeZone zone = DateTimeZone.forID(...);

LocalDate userDate = new LocalDate(input, zone);
boolean exclude = new LocalDate(zone).plusDays(32).isAfter(userDate);

if (exclude) {
  System.out.println("Date should be greater than 32 days in the future.");
}

如果您已经在使用 Java 8,您可以使用其新的 LocalDate class using plusDays() and isBefore() 方法。