我正在尝试将两个日期与当前日期进行比较。当我试图知道日期是否与当前日期相同时,它似乎不起作用。下面是我在代码中所做的:
//BeginDate is set earlier
Date myDate= new SimpleDateFormat("dd/MM/yyyy").parse(BeginDate);
Date now = new Date();
System.out.println("Now : " + now);
System.out.println("myDate : " + myDate);
System.out.println("equals : " + myDate.equals(now));
System.out.println(myDate.compareTo(now));我在控制台中得到了这个:
Now : Thu Dec 29 00:28:45 CET 2011
myDate : Thu Dec 29 00:00:00 CET 2011
equals : false
-1第一次比较应该返回true,第二次比较应该返回"0“,对吗?还是我错过了什么?
发布于 2011-12-29 08:02:29
您的比较失败,因为您现在需要格式化,以便两个日期具有相同的格式,因此可以进行比较。
或者,如果您愿意,可以将日期转换为字符串并执行比较:
String beginDate = "28/12/2011";
Calendar now = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String nowStr = df.format(new Date());
System.out.println("equals : " + beginDate.equals(nowStr));发布于 2011-12-29 07:47:39
使用equals()或compareTo()比较日期可以比较时间(小时、分钟、秒、毫秒)和日期。您的测试失败了,因为myDate是今天午夜,而now比午夜要晚一点。
发布于 2011-12-29 07:52:11
您是否在创建日期时指定了毫秒?所以在之前创建日期时,只需指定天、小时等,而不是秒/毫秒。
和,分别更改SimpleDateFormat。这“应该”行得通。
https://stackoverflow.com/questions/8662567
复制相似问题