我想根据条件验证用户的日期输入。条件是用户输入的新日期应大于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")
}
}
答案 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 ,则可以使用LocalDate
和plusDays()
方法使用新的isBefore()
课程。