0

私は現在、次のように日付の比較を必要とするいくつかのコードに取り組んでいます:

public int compare(ItemLocation o1, ItemLocation o2) {
            try {
                SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
                Date date1 = sdf.parse(o1.getDatePublished());
                Date date2 = sdf.parse(o2.getDatePublished());
                Calendar cal1 = Calendar.getInstance();
                Calendar cal2 = Calendar.getInstance();
                cal1.setTime(date1);
                cal2.setTime(date2);
                if(cal1.equals(cal2)) { 
                    return 0; 
                } else if(cal1.before(cal2)) {
                    return -1;
                } else if(cal1.after(cal2)) {
                    return 1;
                }
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

だから私の質問はマルチパートです。

  1. これは、2つの日付を比較するための最良の方法ですか?
  2. 「メソッドはint型の結果を返す必要があります」というエラーメッセージが表示された場合、これを修正するための最良の方法は何ですか?(リターン0を追加するとは思いません。最後に非常に実用的です...これが私が考えていたものです)
  3. [オプション]3つのif/else ifステートメントを書くためのより効率的な方法はありますか?

みんなありがとう!

4

2 に答える 2

1
  1. 使用するdate1.compareTo(date2)
  2. コンパイルエラー:デフォルトの戻り値はありません。ポイント1を参照
  3. ポイント#1から:

    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
    Date date1 = sdf.parse(o1.getDatePublished());
    Date date2 = sdf.parse(o2.getDatePublished());
    return date1.compareTo(date2);
    
于 2012-08-05T01:24:54.063 に答える
1

日付を比較するのに良い方法のようです。コンパイルエラーの場合は、catchブロックで例外を再スローするか、int値を返します。

于 2012-08-05T01:26:07.637 に答える