四畳半の秘密基地

さあ、今日はどんな実験をしよう

MENU

CalendarクラスのcompareToが分かりづらい

今まで日付の比較を行うときはCalendarクラスのcompareToを使ってやってました。
でもcompareToって直感的じゃなくて毎回リファレンスみて「なるほど」となってたんですよ。

なんか良い実装ないかなぁと思ってましたが、よくよくソースを見てみるとやってることは単純でした。

public int compareTo(Calendar anotherCalendar) {
        if (anotherCalendar == null) {
            throw new NullPointerException("anotherCalendar == null");
        }
        long timeInMillis = getTimeInMillis();
        long anotherTimeInMillis = anotherCalendar.getTimeInMillis();
        if (timeInMillis > anotherTimeInMillis) {
            return 1;
        }
        if (timeInMillis == anotherTimeInMillis) {
            return 0;
        }
        return -1;
    }


要はUnix時間を比較してるだけなんですね。
これなら2つのCalendarで

if (calendar1.getTime() < calendar2.getTime()){
    //処理
}


としたほうが直感的だと思ったので最近はこちらを使うようにしています。