我接受 JSP 页面的属性并想要进行比较。传递给 servlet 的日期是今天、明天还是另一天。我如何比较这个???
Date dateToDo = Date.valueOf(request.getParameter("date")); //for example 2019-08-31
Date today = new Date (System.currentTimeMillis());
Date tomorrow = new Date (System.currentTimeMillis() + 86400000);
if(dateToDo.equals(today)){
System.out.println("Today!");
} else if (dateToDo.equals(tomorrow)){
System.out.println("Tomorrow!");
} else {
System.out.println("OTHER DAY");
}
最佳答案
java.time
LocalDate dateToDo = LocalDate.parse(request.getParameter("date")); //for example 2019-08-31
LocalDate today = LocalDate.now(ZoneId.of("Europe/Minsk"));
LocalDate tomorrow = today.plusDays(1);
if(dateToDo.equals(today)){
System.out.println("Today!");
} else if (dateToDo.equals(tomorrow)){
System.out.println("Tomorrow!");
} else {
System.out.println("OTHER DAY");
}
不要使用java.sql.Date
。首先,它设计得很糟糕,确实是一个糟糕的黑客,而且早已过时了。其次,它除了在 SQL 数据库之间传输日期之外,没有任何其他用途。第三,虽然它假装只是一个没有时间的日期,但事实并非如此,而是在内部存储了毫秒精度,这导致其 equals
方法无法按预期工作。相反,我使用 java.time 中的 LocalDate
,这是现代 Java 日期和时间 API。 LocalDate
就是您所需要的:没有时间和时区的日期。
链接: Oracle tutorial: Date Time解释如何使用 java.time。
关于java - java 中的日期比较搜索今天、明天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57740369/