とある日付が今日と同じかどうかの関数(isToday()
)を作った際に、わからなかったのでまとめます。
下記がその関数(isToday()
)です。
1 2 3 4 5 6 7 |
public static boolean isToday(Calendar cal) { Calendar today = Calendar.getInstance(); return today.get(Calendar.ERA) == cal.get(Calendar.ERA) && today.get(Calendar.YEAR) == cal.get(Calendar.YEAR) && today.get(Calendar.DAY_OF_YEAR) == cal.get(Calendar.DAY_OF_YEAR); } |
理屈は簡単で、比べたい日付のCalendarクラスを渡すだけで、今日かどうかを返してくれます。
内部では今日のCalendarクラスを取得してきて、ERA, YEAR, DAY_OF_YEARを比べて同じかを見ています。
はいここでERAって何?DAY_OF_YEARって何?という疑問が枠と思うのでまとめました。
名前 | 意味 | 例 |
---|---|---|
Calendar.ERA | 英訳すると「時代」という意味ですが、ユリウス暦の AD(1) または BC(0)(紀元前)などの年代を示します。なのでなくてもいいかも | 0(BC) or 1(AD) |
Calendar.DAY_OF_YEAR | 1月1日を1として該当日までの合計を返します。 | 283 |
Calendar.DAY_OF_MONTH | ある月の初日を1として該当日までの合計を返します | 28 |
Calendar.DAY_OF_WEEK | ある週の日曜日を1として、該当日までの合計を返します | 5(木曜日) |