问题描述
我能解决吗? 我想获取用户键入的时间并与当前时间进行比较,如果相差超过1天,则会弹出一条错误消息。我该怎么办?
Iterator i= rows.iterator(); // Iterating grid rows
while (i.hasNext()) {
FormRow row = (FormRow) i.next();
String menudt = row.get("menudate");
}
String CurrentDate;
Date date1 = new Date();
Date date2;
SimpleDateFormat dates = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
//Setting dates
date1.setTime(System.currentTimeMillis());
CurrentDate = dates.format(date1);
date2 = dates.parse(menudt + " " + "18:00:00"); //There are an error here it cannot change the string to date
date1 = dates.parse(CurrentDate);
long diff = Math.abs(date2.getTime() - date1.getTime());
long day = 86400000;
if (diff > day){
System.out.println("HAHAHAH")
}
解决方法
您可以使用以下方法检查日期:
static boolean isValid(String dateString) {
LocalDate date = LocalDate.parse(dateString,DateTimeFormatter.ofPattern("dd/MM/uuuu"));
LocalDate today = LocalDate.now();
LocalDate yesterday = today.minusDays(1);
LocalDate tomorrow = today.plusDays(1);
if (date.isBefore(yesterday) || date.isAfter(tomorrow))
return false;
return true;
}
可以缩写为:
static boolean isValid(String dateString) {
LocalDate date = LocalDate.parse(dateString,DateTimeFormatter.ofPattern("dd/MM/uuuu"));
LocalDate today = LocalDate.now();
return (! date.isBefore(today.minusDays(1)) && ! date.isAfter(today.plusDays(1)));
}
或者,您可以执行此操作,这与您尝试的操作更接近:
static boolean isValid(String dateString) {
LocalDate date = LocalDate.parse(dateString,DateTimeFormatter.ofPattern("dd/MM/uuuu"));
return (Math.abs(ChronoUnit.DAYS.between(LocalDate.now(),date)) <= 1);
}