java.util.Calendarクラスは日時を扱うときに使用するクラスです。
java.util.Calendarについて
java.util.Calendarクラスは比較的古くからある日付や時刻を扱うクラスです。
Java SE8以降では日時の操作は、java.timeパッケージのクラスを使用することが推奨されます。
java.util.Calendarの継承・実装
継承クラス
・java.lang.Object
・java.util.Calendar
実装インターフェース
・java.io.Serializable
・java.lang.Cloneable
・java.lang.Comparable<Calendar>
導入バージョン
・JDK1.1
java.util.CalendarのAPI
型 | 定数 | 説明 |
---|---|---|
int | Calendar.JANUARY | 1月を表す定数 |
int | Calendar.FEBRUARY | 2月を表す定数 |
int | Calendar.MARCH | 3月を表す定数 |
int | Calendar.APRIL | 4月を表す定数 |
int | Calendar.MAY | 5月を表す定数 |
int | Calendar.JUNE | 6月を表す定数 |
int | Calendar.JULY | 7月を表す定数 |
int | Calendar.AUGUST | 8月を表す定数 |
int | Calendar.SEPTEMBER | 9月を表す定数 |
int | Calendar.OCTOBER | 10月を表す定数 |
int | Calendar.NOVEMBER | 11月を表す定数 |
int | Calendar.DECEMBER | 12月を表す定数 |
型 | 定数 | 説明 |
---|---|---|
int | Calendar.SUNDAY | 日曜日を表す定数 |
int | Calendar.MONDAY | 月曜日を表す定数 |
int | Calendar.TUESDAY | 火曜日を表す定数 |
int | Calendar.WEDNESDAY | 水曜日を表す定数 |
int | Calendar.THURSDAY | 木曜日を表す定数 |
int | Calendar.FRIDAY | 金曜日を表す定数 |
int | Calendar.SATURDAY | 土曜日を表す定数 |
型 | 定数 | 説明 |
---|---|---|
int | Calendar.YEAR | 年を表す定数 |
int | Calendar.MONTH | 月を表す定数 |
int | Calendar.DATE | 月の日を表す定数 |
int | Calendar.DAY_OF_YEAR | 年の何日目かを表す定数 |
int | Calendar.DAY_OF_MONTH | 月の日を表す定数(DATEと同じ) |
int | Calendar.DAY_OF_WEEK | 週の何日目かを表す定数 |
int | Calendar.DAY_OF_WEEK_IN_MONTH | 現在の月の何回目の曜日かを表す定数 |
int | Calendar.HOUR | 時 |
int | Calendar.MINUTE | 分 |
int | Calendar.SECOND | 秒 |
int | Calendar.MILLISECOND | ミリ秒 |
int | Calendar.WEEK_OF_YEAR | 現在の年の何週目かを表す定数 |
int | Calendar.WEEK_OF_MONTH | 現在の月の何週目かを表す定数 |
int | Calendar.AM_PM | 午前・午後を表す定数 |
int | Calendar.AM | 午前 |
int | Calendar.PM | 午後 |
int | Calendar.HOUR_OF_DAY | 現在の日で時間を表す定数 |
int | Calendar.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の比較)
-
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日はありえないためエラーとなる →エラーになる
java.util.Calendarサンプルソース
- (Calendarの要素を取得して表示する例)
-
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)); } }
- (実行結果)※2011年8月30日 11時35分24秒284 に実行した場合
- 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)
コメント