Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用equals在java中比较日期_Java_Date - Fatal编程技术网

使用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那是
日期
类中的。只要背对背打印
新日期()
你就会明白了。