Javaで日付操作の処理を書く時は、Dateクラスを直接使うのではなくCalendarクラスを介して処理することが推奨されています。最近Calendarクラスを使って日付操作処理を書く機会があったのでメモ。
Calendarを設定する
Calendarクラスを使用するためには、まずCalendarクラスのインスタンスを取得してから日付を設定する必要があります。
よくある初期化コードはこんな感じです。
1 2 |
Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); //現在日時を設定 |
new Date()は現在日時を表すDateクラスを生成するので、上記のコードでCalendarクラスのインスタンスに現在日時を設定できます。もちろんCalendar.setTimeメソッドに任意のDateクラスを渡すことで、Calendarオブジェクトに任意の日付を設定することができます。
CalendarからDateを取得
もちろんCalendarクラスは日付のセットだけではなく取得ができます。値の取得はCalendar.getメソッドに取得したい種類のCalendarクラスのクラス定数を渡すことで行います。多くのパラメータがあるので、どんな値が取得できるのか一度公式リファレンスを確認してみるとよいでしょう。
日時の取得は以下のように行います。
1 2 3 4 5 |
int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); // 0~11 int hour12 = calendar.get(Calendar.HOUR); // 1~12 int hour24 = calendar.get(Calendar.HOUR_OF_DAY); // 0~23 Date currentDate = calendar.getTime(); // 現在のCalendarオブジェクトが示す日時のDateオブジェクト |
上記のように年・月・日・時・分などの各値を個別に取得することもできるし、全てをひとまとめにしてDateクラスのオブジェクトとして取得することもできます。
最初はCalendarオブジェクトを操作してから日付を取得するという概念がイマイチわかりにくかったんですが、単に慣れの問題なんですかね。