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()){ //処理 }
としたほうが直感的だと思ったので最近はこちらを使うようにしています。