如何检查用户输入的日期是否超过了java中当前日期的32天

时间:2015-05-24 19:06:00

标签: java validation date conditional-statements jodatime

我想根据条件验证用户的日期输入。条件是用户输入的新日期应大于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")
    }
}

2 个答案:

答案 0 :(得分:2)

通用类型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.");
}

答案 1 :(得分:1)

如果您已经使用 Java 8 ,则可以使用LocalDateplusDays()方法使用新的isBefore()课程。