来自java class Date docs:
before(Date when)测试此日期是否在指定日期之前。
当我使用此方法测试所选日期是否等于今天时,我得到wrong
输出消息。
public class JavaApplication28 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws NoSuchAlgorithmException, ParseException {
Date date1;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String statusDT ="2018-04-08";
date1 = formatter.parse(statusDT);
if (date1.equals(new Date())) {
System.out.println("today");
} else if (date1.before(new Date())) {
System.out.println("wrong");
}
}
}
这是date1,即今天的日期
Sun Apr 08 00:00:00 MYT 2018
等值方法看起来也不是函数
equals(Object obj)比较两个日期是否相等。
答案 0 :(得分:2)
date1
代表今天,但代表午夜时间:Sun Apr 08 00:00:00 MYT 2018
new Date()
今天也代表,但实际时间(约15h10):Sun Apr 08 15:10:00 MYT 2018
date1
如果在实际Date()
之前if
,那么它会进入好Java8
部分
由于LocalDateTime
引入了新的Date API,在大多数情况下它更容易使用:
Date
持有Time
(日/月/年)和LocalDate
(秒/分/小时)Date
,其中包含LocalDateTime.toLocalDate()
部分,可以从LocalTime
Time
,其中包含LocalDateTime.toLocalTime()
部分,可以从LocalDate
因此,如果您不重要,只想查看日/月/年,则只能使用{{1}中的LocalDateTime
部分}}:
if (date1.toLocalDate().equals(LocalDate.now())) {
System.out.println("today"); //< ---
} else if (date1.toLocalDate().isBefore(LocalDate.now())) {
System.out.println("before now");
} else if (date1.toLocalDate().isAfter(LocalDate.now())) {
System.out.println("after now");
}
答案 1 :(得分:2)
试试这个:
long l1 = date1.getTime();
long l2 = (new Date()).getTime();
<强>输出强>
1523142000000
1523192849177
医生说:
比较两个相等的日期。结果是真的,当且仅当 参数不为null,是一个表示相同的Date对象 作为此对象的时间点,以毫秒为单位。因此,两个日期 当且仅当 getTime方法返回相同时,对象才相等 两者的长值。
你错了,因为你的东西只相等于日期部分,但是没有,它也比较了时间部分
因为您使用的是Java 8,为什么不使用java.time
来代替:
String statusDT = "2018-04-08";
LocalDate date = LocalDate.parse(statusDT, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
if (date.isEqual(LocalDate.now())) {
System.out.println("today");
} else if (date.isBefore(LocalDate.now())) {
System.out.println("before");
} else {
System.out.println("after");
}
答案 2 :(得分:-1)
类java.util.Date
包含日期和时间 - 可以在程序的输出中看到。通过解析Date
获得的String
没有时间,只有一个日期。换句话说,它的时间是00:00(即午夜)。因此,这两个Date
不是equeal。
顺便说一句,您为Date
类的 javadoc 提供的链接是Java 8文档。如果这意味着您使用的是Java 8,则会有一个新的Date-Time API。有一个教程
https://docs.oracle.com/javase/tutorial/datetime/index.html