使用equals在java中比较日期
*更新*我的类使用equals在java中比较日期,java,date,Java,Date,*更新*我的类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在日期中被覆盖,因此它应该执行sys
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
在日期中被覆盖,因此它应该执行sysout。但它不打印任何内容
另外,我不允许使用乔达时间图书馆
更新-是否有其他方法将shippingDate
与当前日期进行比较。我不想使用SimpleDateFormat
硬编码当前日期。它必须从系统中生成。给出了一个线索(强调矿山):
public Date()
分配一个Date
对象,并对其进行初始化,使其表示分配该对象的时间,以最接近的毫秒测量
重点提示(我的):
public Date()
分配一个Date
对象,并对其进行初始化,使其表示分配该对象的时间,以最接近的毫秒测量
当您创建一个新的
Date
对象时,它使用系统的当前时间,因此两个日期实际上在行之间传递的毫秒数上不同
Calendar g = new GregorianCalendar();
及
当您创建一个新的
Date
对象时,它使用系统的当前时间,因此两个日期实际上在行之间传递的毫秒数上不同
Calendar g = new GregorianCalendar();
及
您是否注意到您有两行,在
第1行
您得到了calendar对象,并将其与第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()将其与系统时间进行比较
但是结果永远不会相同您是否注意到您有两行,在第1行
您得到了calendar对象,并将其与第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()
但结果永远不会与Date
类中的libik相同。只需打印new Date()
背对背,你就会明白了。@libik那是日期
类中的。只要背对背打印新日期()
你就会明白了。