1

* UPDATEjava.util.Date shippingDate *現在の日付と等しいかどうかを比較する必要があるクラスにインスタンスがあります。

java.util.Date shippingDate ;
Calendar g = new GregorianCalendar();
shippingDate=g.getTime();
if(shippingDate.equals(new Date()))
{
System.out.println("Match found");
}

EqualsDate でオーバーライドされるため、sysout を実行する必要があります。しかし、何も出力しません。

PS#Joda Time ライブラリの使用は許可されていません。

shippingDate更新-現在の日付と比較する他の方法はありますか? を使用して現在の日付をハードコーディングしたくありませんSimpleDateFormat。システムから生成する必要があります。

4

3 に答える 3

5

Javadocは手がかりを提供します(強調は私のものです):

public Date()

オブジェクトを割り当てて初期化し、割り当てられた時刻を最も近いミリ秒単位Dateで表すようにします。

于 2013-10-12T18:19:28.753 に答える
1

新しいDateオブジェクトを作成すると、システムの現在の時間がかかるため、両方の日付は実際には行間で渡されるミリ秒が異なります

Calendar g = new GregorianCalendar();

if(shippingDate.equals(new Date()))
于 2013-10-12T18:19:48.787 に答える
0

2 つの行があることに気付きましたか? で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");
}

複数のステートメントで作成された 2 つの異なるオブジェクトを比較しようとすると、結果が等しくなることはありません。


更新であなたの質問に対処する: を使用してミリ秒単位で時間を取得しshippingDate.getTime()、これをシステム時間の使用と比較するSystem.currentTimeMillis()か、使用することもできますSystem.nanoTime() が、結果は決して同じではありません

于 2013-10-12T18:23:11.613 に答える