* UPDATE *我的班级java.util.Date shippingDate
中有一个实例,我需要比较它是否等于当前日期。
java.util.Date shippingDate ;
Calendar g = new GregorianCalendar();
shippingDate=g.getTime();
if(shippingDate.equals(new Date()))
{
System.out.println("Match found");
}
Equals
在Date中被覆盖,因此它应该执行sysout.But它不打印任何内容。
PS#我不允许使用Joda Time库。
更新 - 有没有其他方法可以将shippingDate
与当前日期进行比较。我不想使用SimpleDateFormat
对当前日期进行硬编码。它必须从系统生成。
答案 0 :(得分:5)
Javadoc给出了一个线索(强调我的):
public Date()
分配一个
Date
对象并对其进行初始化,使其代表分配时间,测量到最接近的毫秒。
答案 1 :(得分:1)
当您创建一个新的Date
对象时,它会占用系统的当前时间,因此两个日期实际上在行之间传递的毫秒数不同
Calendar g = new GregorianCalendar();
和
if(shippingDate.equals(new Date()))
答案 2 :(得分:0)
您是否注意到您有两行并且在line 1
获得日历对象并将其与line 2
的日期对象进行比较,了解两者的执行时间之间存在毫秒差异所以它永远不会是一样的。
java.util.Date shippingDate ;
Calendar g = new GregorianCalendar(); //line 1
shippingDate=g.getTime();
if(shippingDate.equals(new Date())) //line 2
{
System.out.println("Match found");
}
如果您尝试比较在多个语句中创建的两个不同对象,结果将永远不会相等。
在更新中解决您的问题:
使用shippingDate.getTime()
获取时间(以毫秒为单位)然后将其与系统时间使用System.currentTimeMillis()
进行比较,或者您也可以使用System.nanoTime()
,但结果将永远不会相同