JavaではCalendarクラスを使用して、現在の日時を取得したり、指定したフォーマットで日時を取得、日時の演算など、さまざまな日付処理を行うことが可能です。
【基礎】Calendarクラスとは
【基礎】Calendarクラスの基本的な使い方
【発展】日付のフォーマットを指定する方法
【発展】日付を設定する方法
【発展】日付を計算する方法
【発展】Dateクラス⇔Calendarクラスを変換する方法
今回はそんなCalendarクラスの使い方について、わかりやすく解説します!
なお、Javaの記事については、こちらにまとめています。
Calendarクラスとは
Calendarクラスとは、現在の年月日を取得したり、指定した日時の設定や加算・減算、日時を比較するなど、日時を扱うさまざまな処理が可能なクラスです。
使用するにはimport java.util.Calendarを指定します。
Calendarクラスは、new演算子でオブジェクトを生成するのでなく、getInstanceメソッドをを使用して作成します。
Calendarクラスのオブジェクトは以下のように生成します。
Calendar cl = Calendar.getInstance();
getInstanceメソッドは、オブジェクトを生成する度に、現在の年・月・日に初期化された状態でオブジェクトを返します。
Calendarクラスの使い方
ここでは、実際にCalendarクラスの使い方を見ていきましょう
以下のサンプルでは、getメソッドで現在の年・月・日をそれぞれ取得しています。
import java.util.Calendar; public class CalendarSample { public static void main(String[] args) { //Calendarクラスのオブジェクトを生成する Calendar cl = Calendar.getInstance(); //Calendarクラスの定数を使用して、年・月・日をそれぞれ取得する System.out.println("年:" + cl.get(Calendar.YEAR)); System.out.println("月:" + cl.get(Calendar.MONTH)); System.out.println("日:" + cl.get(Calendar.DATE)); } }
実行結果 年:2017 月:5 日:9
サンプルでは、Calendarクラスのオブジェクトclを作成し、clに対してgetメソッドを使用して年・月・日をそれぞれ取得しています。
しかし、月に関しては月またぎの問題で0が1月となります。そのため、紛らわしさを回避するためには、以下のように記述する必要があります。
int month = cl.get(Calendar.MONTH) + 1; System.out.println("MONTH:" + month);
これで現在の月である6が出力されます。
そんなCalendarクラスの基本的な使い方や、日付を計算する方法などについては、以下の記事で詳しく解説しています。
フォーマットを指定する方法
日付を取得するとき、「yyyy年MM月dd日」「yyyy/MM/dd」など、フォーマットを指定したい場合もあるかと思います。
日付や時刻のフォーマットを指定する場合は、SimpleDateFormatクラスを使用します。
SimpleDateFormatクラスを使用するためには、import java.text.SimpleDateFormatを指定します。
SimpleDateFormatクラスは以下のように記述します。
SimpleDateFormat sdf = new SimpleDateFormat(String)
SimpleDateFormatクラスを使用して、日付のフォーマットを指定する方法の詳細については、以下の記事で詳しく説明しています!
日付を設定する方法
カレンダーの年・月・日などの要素を指定した値に設定するにはCalendarクラスのsetメソッドを使用します。
Calendarクラスで用意されているYEAR、MONTH、DATEなどの定数を指定して、年・月・日の単位ごとや年月日をまとめて取得することができます。
setメソッドは第一引数のフィールドにCalendarクラスの定数を指定し、第二引数に値を指定します。
public void set(int field, int value)
Calendarクラスのsetメソッドの使用方法については、以下の記事で詳しく解説しています。
日付を計算する方法
Calendarクラスのオブジェクトが保持している日時に対して、値を指定して加算・減算して日時を取得するには、Calendarクラスのaddメソッドを使用します。
addメソッドは第一引数のフィールドにCalendarクラスの定数を指定し、第二引数に値を指定します。
public void set(int field, int value)
Calendarクラスのaddメソッドの使用方法については、以下の記事で詳しく解説しています。
Date⇔Calendarの変換方法
DateクラスもCalendarクラス同様日付を扱うクラスです。
Calendarクラスは、日付のフォーマットを指定したり、日付や時刻を演算できるのに対して、Dateクラスは1970年1月1日0時からの経過時間を持ち、指定した日付や時刻を取得するときに使用します。
そんなDateクラスとCalendarクラスは、それぞれ取得した値を相互変換することができます。
相互変換の詳しい方法については、以下の記事で解説しています!
まとめ
ここではCalendarクラスの基本的な使い方や、フォーマットを指定する方法、指定した値で日付を演算する方法、Dateクラスとの相互変換の方法などについて紹介しました。
JavaではCalendarクラスを使用してさまざまな日付の処理が可能です。
もし、Calendarクラスの使い方を忘れてしまったら、この記事を思い出してくださいね。