日時に関する情報を取得する(get)

広告

年月日や時刻などの情報をCalendarオブジェクトから取得する方法を見ていきます。

get
public int get(int field)

指定されたカレンダフィールドの値を返します。非厳密モードでは、すべてのカレンダフィールドが正規化されます。厳密モードでは、すべてのカレンダフィールドが検証され、カレンダフィールドが範囲外の値を保持する場合にはこのメソッドにより例外がスローされます。正規化および検証は、complete() メソッドにより処理されます。この処理は、カレンダシステムにより異なります。

パラメータ:
field - 指定されたカレンダフィールド
戻り値:
指定されたカレンダフィールドの値
例外:
ArrayIndexOutOfBoundsException - 指定されたフィールドが範囲外の場合
(field < 0 || field >= FIELD_COUNT)

引数に指定できるカレンダーフィールドの値は下記の通りです。

説明
AM_PMHOUR が正午より前であるか後であるかを示します。
DATE月の日を示します。
DAY_OF_MONTH月の日を示します。
DAY_OF_WEEK曜日を示します。
DAY_OF_WEEK_IN_MONTH現在の月の何度目の曜日かを示します。
DAY_OF_YEAR現在の年の何日目かを示します。
DST_OFFSET夏時間のオフセットをミリ秒単位で示します。
ERAユリウス暦の AD または BC などの年代を示します。
HOUR午前または午後の何時かを示します。
HOUR_OF_DAY時刻を示します。
MILLISECONDミリ秒を示します。
MINUTE分を示します。
MONTH月を示すフィールド値です。
SECOND秒を示します。
WEEK_OF_MONTH現在の月の何週目かを示します。
WEEK_OF_YEAR現在の年の何週目かを示します。
YEAR年を示すフィールド値です。
ZONE_OFFSETGMT から直接計算したオフセットをミリ秒単位で示します。

上記は全て「static int」型として定義されており、例えば「get(Calendar.MINUTE)」とすることで、設定されている時刻の「分」に関する値を取得することができます。

基本的に各値が取り得る値は「1」から開始されますが、MONTHに関しては最初の値(つまり1月)は「0」から開始されるので注意して下さい。個々のフィールドに関しての細く説明は下記の通りです。

MONTH

このフィールドの値は0から11で、JANUARY(0), FEBRUARY(1), MARCH(2), APRIL(3), MAY(4), JUNE(5), JULY(6), AUGUST(7), SEPTEMBER(8), OCTOBER(9), NOVEMBER(10), DECEMBER(11)になります。

HOUR

HOUR は 12 時間制 (0 ~ 11) です。正午および真夜中は、12 ではなく 0 で表されます。

DAY_OF_WEEK

このフィールドの値は1から7で、SUNDAY(1)、MONDAY(2)、TUESDAY(3)、WEDNESDAY(4)、THURSDAY(5)、FRIDAY(6)、および SATURDAY(7) になります。

AM_PM

このフィールドの値は0か1で、AM(0)、PMY(1) になります。

サンプルプログラム

では実際に試してみましょう。

testCalendar1.java

import java.util.Calendar;

class testCalendar1{
  public static void main(String args[]){
    String[] week_name = {"日曜日", "月曜日", "火曜日", "水曜日", 
                          "木曜日", "金曜日", "土曜日"};

    Calendar calendar = Calendar.getInstance();

    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH) + 1;
    int day = calendar.get(Calendar.DATE);
    int hour = calendar.get(Calendar.HOUR_OF_DAY);
    int minute = calendar.get(Calendar.MINUTE);
    int second = calendar.get(Calendar.SECOND);
    int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;

    int day_of_year = calendar.get(Calendar.DAY_OF_YEAR);

    System.out.println("現在の日時は");
    System.out.println(year + "年" + month + "月" + day + "日");
    System.out.println("(" + week_name[week] + ")");
    System.out.println(hour + "時" + minute + "分" + second + "秒");

    System.out.println("今日は今年の" + day_of_year + "日目です");
  }
}

上記を実際にコンパイルして実行してみると下記のようになります。

p1

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。