[英]Comparing Dates in java using equals
* 更新 *我在类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
与当前Date进行比较。 我不想使用SimpleDateFormat
对当前日期进行硬编码。 它必须从系统生成。
Javadoc提供了一个线索(重点是我的):
public Date()
分配一个
Date
对象并对其进行初始化,以便它表示分配给它的时间 ( 以最近的毫秒为单位) 。
当创建一个新的Date
对象时,它占用系统的当前时间,因此两个日期实际上在行之间传递的毫秒数上有所不同
Calendar g = new GregorianCalendar();
和
if(shippingDate.equals(new Date()))
您是否注意到有两行,并且在line 1
获得了日历对象,并在line 2
其与date对象进行了比较,请理解,两者的执行时间之间存在毫秒差,所以它永远不会相同。
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()
但结果永远不会相同
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.