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日はありえないためエラーとなる →エラーになる
日付カテゴリ