1

日付が等しいか等しくない場合でも、CompareToは失敗します。1を印刷するだけです。

CompareToは、比較時に0を返しません。!!

このばかげたコードは私の頭を圧迫します。私がファウルした友達ねえ?

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class date {

public static void main (String args[]) throws ParseException
{


    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date expiry = sdf.parse("2012-11-09");


    System.out.println(sdf.format(expiry));


    Calendar cal1 = Calendar.getInstance();
    Calendar cal2 = Calendar.getInstance();
    cal1.setTime(expiry);
    cal1.add(Calendar.DATE, -2);
    System.out.println(sdf.format(cal1.getTime()));
    System.out.println(sdf.format(cal2.getTime()));
    int j = cal1.compareTo(cal2);

    System.out.println("The result is :" + j);
}

}
4

3 に答える 3

3

compareTo真実を語る。時間、分、秒、ミリ秒を出力から非表示にしました。

expiry日付は、実際の時刻を保持しながら、1日(その00:00:00.0000日の最初のミリ秒)に設定されます。cal2

于 2012-11-07T08:51:37.663 に答える
1

compareTo関数はあなたに解決策を与えます...あなたはここを見ることができます。

http://www.java-examples.com/compare-two-java-date-objects-using-compareto-method-example

于 2012-11-07T08:53:00.200 に答える
1

CompareToは、2つのCalendarオブジェクトによって表される時間値(エポックからのミリ秒オフセット)を比較します。cal1とcal2の両方をフォーマットして印刷すると、時差がわかります。

System.out.println(cal1.getTime());
System.out.println(cal2.getTime());

これにより、2つのカレンダーインスタンスによる正確な保持時間が表示されます。

于 2012-11-07T08:56:54.073 に答える