HOME > 日付を扱う(Calendar型)
日付を扱う(Calendar型)
特定の日時の設定や日時の計算を行いたい場合は、java.util.Calendarクラスが便利です。
サンプルソースコード
- Calendarサンプル(2011年8月30日 11時35分24秒284 に実行とする)
- 
import java.util.Calendar; public class CalendarSample { public static void main(String args[]) { //Calendarを生成 Calendar cal = Calendar.getInstance(); //画面出力 System.out.println("YEAR: " + cal.get(Calendar.YEAR)); System.out.println("MONTH: " + cal.get(Calendar.MONTH)); System.out.println("DATE: " + cal.get(Calendar.DATE)); System.out.println("HOUR: " + cal.get(Calendar.HOUR)); System.out.println("MINUTE: " + cal.get(Calendar.MINUTE)); System.out.println("SECOND: " + cal.get(Calendar.SECOND)); System.out.println("MILLISECOND: " + cal.get(Calendar.MILLISECOND)); System.out.println("DAY_OF_YEAR: " + cal.get(Calendar.DAY_OF_YEAR)); System.out.println("DAY_OF_MONTH: " + cal.get(Calendar.DAY_OF_MONTH)); System.out.println("DAY_OF_WEEK: " + cal.get(Calendar.DAY_OF_WEEK)); System.out.println("DAY_OF_WEEK_IN_MONTH: " + cal.get(Calendar.DAY_OF_WEEK_IN_MONTH)); System.out.println("WEEK_OF_YEAR: " + cal.get(Calendar.WEEK_OF_YEAR)); System.out.println("WEEK_OF_MONTH: " + cal.get(Calendar.WEEK_OF_MONTH)); System.out.println("AM_PM: " + cal.get(Calendar.AM_PM)); System.out.println("HOUR_OF_DAY: " + cal.get(Calendar.HOUR_OF_DAY)); System.out.println("ERA: " + cal.get(Calendar.ERA)); } }
- 実行結果
- C:\>java CalendarSample YEAR: 2011 MONTH: 7 DATE: 30 HOUR: 11 MINUTE: 35 SECOND: 24 MILLISECOND: 284 DAY_OF_YEAR: 242 DAY_OF_MONTH: 30 DAY_OF_WEEK: 3 DAY_OF_WEEK_IN_MONTH: 5 WEEK_OF_YEAR: 36 WEEK_OF_MONTH: 5 AM_PM: 0 HOUR_OF_DAY: 11 ERA: 1
月は、0~11の数値で表されるのでご注意ください。(1月→0 ~ 12月→11)
表示形式を指定の形式で表示したい場合は、java.text.SimpleDateFormatクラスを使用すれば簡単に実現できます。(YYYY/MM/DD 形式で表示したいなど)
→日付をフォーマットするを参照ください。
主要定数
| 定数 | 説明 | 
|---|---|
| JANUARY | 1月を表す定数 | 
| FEBRUARY | 2月を表す定数 | 
| MARCH | 3月を表す定数 | 
| APRIL | 4月を表す定数 | 
| MAY | 5月を表す定数 | 
| JUNE | 6月を表す定数 | 
| JULY | 7月を表す定数 | 
| AUGUST | 8月を表す定数 | 
| SEPTEMBER | 9月を表す定数 | 
| OCTOBER | 10月を表す定数 | 
| NOVEMBER | 11月を表す定数 | 
| DECEMBER | 12月を表す定数 | 
| 定数 | 説明 | 
|---|---|
| SUNDAY | 日曜日を表す定数 | 
| MONDAY | 月曜日を表す定数 | 
| TUESDAY | 火曜日を表す定数 | 
| WEDNESDAY | 水曜日を表す定数 | 
| THURSDAY | 木曜日を表す定数 | 
| FRIDAY | 金曜日を表す定数 | 
| SATURDAY | 土曜日を表す定数 | 
| 定数 | 説明 | 
|---|---|
| YEAR | 年を表す定数 | 
| MONTH | 月を表す定数 | 
| DATE | 月の日を表す定数 | 
| DAY_OF_YEAR | 年の何日目かを表す定数 | 
| DAY_OF_MONTH | 月の日を表す定数(DATEと同じ) | 
| DAY_OF_WEEK | 週の何日目かを表す定数 | 
| DAY_OF_WEEK_IN_MONTH | 現在の月の何回目の曜日かを表す定数 | 
| HOUR | 時 | 
| MINUTE | 分 | 
| SECOND | 秒 | 
| MILLISECOND | ミリ秒 | 
| WEEK_OF_YEAR | 現在の年の何週目かを表す定数 | 
| WEEK_OF_MONTH | 現在の月の何週目かを表す定数 | 
| AM_PM | 午前・午後を表す定数 | 
| AM | 午前 | 
| PM | 午後 | 
| HOUR_OF_DAY | 現在の日で時間を表す定数 | 
| ERA | 年代を表す定数(BC, AD) | 
主要メソッド
| 戻値型 | メソッド | 説明 | 
|---|---|---|
| Calendar | getInstance() | Calendarインスタンスを取得する | 
| int | get(int f) | フィールドの値を取得する | 
| void | set(int f, int v) | フィールドの値をセットする | 
| void | set(int y, int m, int d) | y年、m月、d日をセットする (月は、1月→0 ~ 12月→11) | 
| void | add(int f, int v) | フィールドの値を加減算する | 
| Date | getTime() | Date型で取得する | 
| void | setLenient(boolean b) | 値の解釈を厳密に行うかどうかを設定する ※下の「setLenientメソッドサンプル」参照 | 
| void | clear() | 日付情報をクリアする (1970年1月1日 00:00:00になる) | 
| void | clear(int f) | 指定したフィールドの日付情報をクリアする | 
| boolean | after(Calendar c) | 引数の方が過去の場合はtrue ※下の「Calendarの比較サンプル」参照 | 
| boolean | before(Calendar c) | 引数の方が未来の場合はtrue ※下の「Calendarの比較サンプル」参照 | 
| int | getActualMaximum(int f) | 指定したフィールドが取りうる最大値を返す | 
| int | getActualMinimum(int f) | 指定したフィールドが取りうる最小値を返す | 
| long | getTimeInMillis() | Calendarの時刻値をミリ秒で返す | 
- 日時をセットするサンプル
- 
//年、月、日をセットする(個別) Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 1988); //1988年 cal.add(Calendar.MONTH, 1); //2月 cal.add(Calendar.DATE, 11); //11日 //年、月、日をセットする(一括) Calendar cal = Calendar.getInstance(); cal.set(2006, 1, 11); //2006年2月11日 //年、月、日、時、分をセットする(一括) Calendar cal = Calendar.getInstance(); cal.set(2006, 1, 11, 22, 9); //2006年2月11日22時9分 //年、月、日、時、分、秒をセットする(一括) Calendar cal = Calendar.getInstance(); cal.set(2006, 1, 11, 22, 9, 59); //2006年2月11日22時9分59秒
- 日時の加減算サンプル
- 
//1年加算する cal.add(Calendar.YEAR, 1); //1ヶ月減算する cal.add(Calendar.MONTH, -1);
- フィールドの値をクリアするサンプル
- 
//年を未定義にする cal.clear(Calendar.YEAR); //全てのフィールドを未定義にする cal.clear();
- Calendarの比較サンプル
- 
//cal1>cal2であるかを比較する boolean b = cal1.after(cal2); //cal1<cal2であるかを比較する boolean b = cal1.before(cal2); ※ after、before共にイコールの場合はfalse
- setLenientメソッドサンプル
- 
//値を厳密に解釈しない場合 Calendar cal = Calendar.getInstance(); cal.set(Calendar.MONTH, 7); //8月を指定 cal.setLenient(true); cal.set(Calendar.DATE, 32); //32日はありえないが、9月1日としてセットされる →エラーにはならない //値を厳密に解釈する場合 Calendar cal = Calendar.getInstance(); cal.setLenient(false); cal.set(Calendar.DATE, 32); //32日はありえないためエラーとなる →エラーになる