繁体   English   中英

使用equals比较Java中的日期

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM