Java日历问题:为什么这两个日期不相等?
当我多次运行上面的代码时,每次(对于打印日期的条件)都会打印“两者不相等”,但(对于日历的条件),有时会打印“Cal equal”,有时会打印“Cal not equal”。谁能解释一下为什么会这样Java日历问题:为什么这两个日期不相等?,java,Java,当我多次运行上面的代码时,每次(对于打印日期的条件)都会打印“两者不相等”,但(对于日历的条件),有时会打印“Cal equal”,有时会打印“Cal not equal”。谁能解释一下为什么会这样 我尝试这个的主要原因是因为我想比较两个日期。创建对象时,两者的日期、月份和年份相同,但时间不同。我希望他们能被平等地比较。我该怎么做呢?改用它,它在处理日期和时间方面(比标准日期和日历)要好得多。你需要清除千秒。我相信日历也有毫秒精度。如果要继续代码,请添加 import java.io.*; p
我尝试这个的主要原因是因为我想比较两个日期。创建对象时,两者的日期、月份和年份相同,但时间不同。我希望他们能被平等地比较。我该怎么做呢?改用它,它在处理日期和时间方面(比标准日期和日历)要好得多。你需要清除千秒。我相信日历也有毫秒精度。如果要继续代码,请添加
import java.io.*;
public class testing {
public static void main(String a[]) throws Exception{
Date d1=new Date();
Thread.sleep(2000);
Date d2=new Date();
if(d1.equals(d2)){
System.out.println("Both equal");
}else{
System.out.println("Both not equal");
}
Calendar c1=Calendar.getInstance();
Calendar c2=Calendar.getInstance();
c1.setTime(d1);
c2.setTime(d2);
c1.clear(Calendar.HOUR);
c1.clear(Calendar.MINUTE);
c1.clear(Calendar.SECOND);
c2.clear(Calendar.HOUR);
c2.clear(Calendar.MINUTE);
c2.clear(Calendar.SECOND);
if(c2.compareTo(c1) == 0){
System.out.println("Cal Equal");
}else {
System.out.println("Cal Not Equal");
}
}
}
然后尝试比较。截断毫秒字段
日历也有毫秒。添加以下内容:
c1.clear(Calendar.MILLISECOND);
c2.clear(Calendar.MILLISECOND);
但是使用从更容易实现该功能
这将删除所有小时、分钟、秒和毫秒。之后
c1 = DateUtils.truncate(c1, Calendar.DATE);
c2 = DateUtils.truncate(c2, Calendar.DATE);
加
这比c1.clear(日历毫秒)更容易输入代码>
进行治疗。在比较日期之前,使用以下方法重置时间
c1.clear();
这个答案出现在每个与日期相关的问题中。虽然可能是真的,但我仍然不知道它是如何回答OP的问题的。使用.clear方法将截断日历实例到时间的起点。。01/01/1970 .
Calendar c1=Calendar.getInstance();
c1.clear();
private Calendar resetHours(Calendar cal) {
cal.set(Calendar.HOUR, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND,0);
cal.set(Calendar.HOUR_OF_DAY,0);
cal.set(Calendar.MILLISECOND,0);
return cal;
}