広告

Java : Calendar (カレンダー) - API使用例

Calendar (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。

注意

  • Calendar クラスは、非推奨(@Deprecated) にこそなっていませんが、古い API です。
    代わりに、java.time パッケージにある LocalDateTimeZonedDateTime などの新しい API を使うことをおすすめします。


概要

Calendarクラスは、特定の時点とYEAR、MONTH、DAY_OF_MONTH、HOURなどのカレンダ・フィールド・セット間の変換、および次週の日付の取得などのカレンダ・フィールド操作を行うための抽象クラスです。 特定のインスタントは、1970年1月1日00:00:00.000 GMT (グレゴリオ暦)を元期とするミリ秒単位のオフセットで表現できます。

クラス構成

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.DECEMBER, 31)
        .setTimeOfDay(14, 30, 59)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-12-31 14:30:59

System.out.println(calendar.get(Calendar.YEAR)); // 2100
System.out.println(calendar.get(Calendar.MONTH) == Calendar.DECEMBER); // true
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 31
System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 14
System.out.println(calendar.get(Calendar.MINUTE)); //30
System.out.println(calendar.get(Calendar.SECOND)); // 59

フィールド

static final int ALL_STYLES

「January」や「Jan」などのすべてのスタイルで名前を示す、getDisplayNamesのスタイル指示子です。

final var calendar = new Calendar.Builder().build();
final var names = calendar.getDisplayNames(
        Calendar.MONTH, Calendar.ALL_STYLES, Locale.US);

// {September=8, December=11, February=1, November=10, January=0, October=9,
//  August=7, April=3, March=2, July=6, June=5, Apr=3, Aug=7, Dec=11, Feb=1,
//  Jan=0, Jul=6, Jun=5, Mar=2, May=4, Nov=10, Oct=9, Sep=8}
System.out.println(names);

static final int AM

深夜零時から正午の前までの時間を示すAM_PMフィールドの値です。

final var calendar = new Calendar.Builder()
        .setTimeOfDay(10, 0, 0)
        .build();

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 10

System.out.println(calendar.get(Calendar.AM_PM) == Calendar.AM); // true
System.out.println(calendar.get(Calendar.AM_PM) == Calendar.PM); // false
final var calendar = new Calendar.Builder()
        .setTimeOfDay(17, 0, 0)
        .build();

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 17

System.out.println(calendar.get(Calendar.AM_PM) == Calendar.AM); // false
System.out.println(calendar.get(Calendar.AM_PM) == Calendar.PM); // true

static final int AM_PM

getおよびsetのためのフィールド値で、HOURが正午より前であるかあとであるかを示します。

final var calendar = new Calendar.Builder()
        .setTimeOfDay(10, 0, 0)
        .build();

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 10

System.out.println(calendar.get(Calendar.AM_PM) == Calendar.AM); // true
System.out.println(calendar.get(Calendar.AM_PM) == Calendar.PM); // false
final var calendar = new Calendar.Builder()
        .setTimeOfDay(17, 0, 0)
        .build();

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 17

System.out.println(calendar.get(Calendar.AM_PM) == Calendar.AM); // false
System.out.println(calendar.get(Calendar.AM_PM) == Calendar.PM); // true

static final int APRIL

グレゴリオ暦とユリウス暦の年の4番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.APRIL, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.APRIL); // true

protected boolean areFieldsSet

fields[]が現在設定されている時間と同期をとっている場合はtrueです。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

static final int AUGUST

グレゴリオ暦とユリウス暦の年の8番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.AUGUST, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.AUGUST); // true

static final int DATE

getおよびsetのためのフィールド値で、月の日を示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.FEBRUARY, 15)
        .build();

System.out.printf("%tF%n", calendar); // 2100-02-15

System.out.println(calendar.get(Calendar.DATE)); // 15
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 15

static final int DAY_OF_MONTH

getおよびsetのためのフィールド値で、月の日を示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 15)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-15

System.out.println(calendar.get(Calendar.YEAR)); // 2100
System.out.println(calendar.get(Calendar.MONTH) == Calendar.JANUARY); // true
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 15

static final int DAY_OF_WEEK

getおよびsetのためのフィールド値で、曜日を示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 3)
        .build();

{
    final var name = calendar.getDisplayName(
            Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
    System.out.println(name); // Sunday

    System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 1
}

calendar.add(Calendar.DATE, 1);

{
    final var name = calendar.getDisplayName(
            Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
    System.out.println(name); // Monday

    System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 2
}

calendar.add(Calendar.DATE, 5);

{
    final var name = calendar.getDisplayName(
            Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
    System.out.println(name); // Saturday

    System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 7
}

static final int DAY_OF_WEEK_IN_MONTH

getおよびsetのためのフィールド値で、現在の月の何度目の曜日かを示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Friday

System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); // 1

calendar.set(Calendar.DAY_OF_MONTH, 7);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); // 1

calendar.set(Calendar.DAY_OF_MONTH, 8);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); // 2

calendar.set(Calendar.DAY_OF_MONTH, 14);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); // 2

calendar.set(Calendar.DAY_OF_MONTH, 15);
System.out.println(calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)); // 3

static final int DAY_OF_YEAR

getおよびsetのためのフィールド値で、現在の年の何日目かを示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 1

calendar.set(2100, Calendar.JANUARY, 31);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 31

calendar.set(2100, Calendar.FEBRUARY, 1);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 32

calendar.set(2100, Calendar.DECEMBER, 31);
System.out.println(calendar.get(Calendar.DAY_OF_YEAR)); // 365

static final int DECEMBER

グレゴリオ暦とユリウス暦の年の12番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.DECEMBER, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.DECEMBER); // true

static final int DST_OFFSET

getおよびsetのためのフィールド値で、夏時間のオフセットをミリ秒単位で示します。

final var zone = TimeZone.getTimeZone("America/Los_Angeles");

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.AUGUST, 1)
        .setTimeZone(zone)
        .build();

System.out.println(calendar.get(Calendar.DST_OFFSET)); // 3600000

static final int ERA

getおよびsetのためのフィールド値で、ユリウス暦のADまたはBCなどの年代を示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.get(Calendar.ERA)); // 1

calendar.set(Calendar.YEAR, -100);
System.out.println(calendar.get(Calendar.ERA)); // 0

static final int FEBRUARY

グレゴリオ暦とユリウス暦の年の2番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.FEBRUARY, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.FEBRUARY); // true

static final int FIELD_COUNT

getおよびsetによって認識される重複しないフィールドの数です。

System.out.println(Calendar.FIELD_COUNT); // 17

protected int[] fields

このカレンダで現在設定されている時間に対するカレンダ・フィールド値です。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

static final int FRIDAY

金曜日を示すDAY_OF_WEEKフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Friday

final var value = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(value == Calendar.FRIDAY); // true

static final int HOUR

getおよびsetのためのフィールド値で、午前または午後の何時かを示します。

final var calendar = new Calendar.Builder()
        .setTimeOfDay(14, 30, 59, 999)
        .build();

System.out.printf("%tT%n", calendar); // 14:30:59

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 14
System.out.println(calendar.get(Calendar.HOUR)); // 2

System.out.println(calendar.get(Calendar.MINUTE)); // 30
System.out.println(calendar.get(Calendar.SECOND)); // 59
System.out.println(calendar.get(Calendar.MILLISECOND)); // 999

static final int HOUR_OF_DAY

getおよびsetのためのフィールド値で、時間を示します。

final var calendar = new Calendar.Builder()
        .setTimeOfDay(14, 30, 59, 999)
        .build();

System.out.printf("%tT%n", calendar); // 14:30:59

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 14
System.out.println(calendar.get(Calendar.HOUR)); // 2

System.out.println(calendar.get(Calendar.MINUTE)); // 30
System.out.println(calendar.get(Calendar.SECOND)); // 59
System.out.println(calendar.get(Calendar.MILLISECOND)); // 999

protected boolean[] isSet

指定されたカレンダ・フィールドがカレンダで設定されているかどうかを示すフラグです。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

protected boolean isTimeSet

timeの値が有効である場合はtrueです。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

static final int JANUARY

グレゴリオ暦とユリウス暦の年の最初の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.JANUARY); // true

static final int JULY

グレゴリオ暦とユリウス暦の年の7番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JULY, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.JULY); // true

static final int JUNE

グレゴリオ暦とユリウス暦の年の6番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JUNE, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.JUNE); // true

static final int LONG

LONG_FORMATと同等の、getDisplayNameおよびgetDisplayNamesのスタイル指示子です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var name1 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.LONG, Locale.US);
System.out.println(name1); // January

final var name2 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.SHORT, Locale.US);
System.out.println(name2); // Jan

final var name3 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.NARROW_FORMAT, Locale.US);
System.out.println(name3); // J

static final int LONG_FORMAT

フォーマットに使用される長い名前を示す、getDisplayNameおよびgetDisplayNamesのスタイル指示子です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var name1 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.LONG, Locale.US);
System.out.println(name1); // January

final var name2 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.LONG_FORMAT, Locale.US);
System.out.println(name2); // January

static final int LONG_STANDALONE

独立して使用される長い名前(カレンダ・ヘッダーとしての月の名前など)を示すgetDisplayNameおよびgetDisplayNamesのスタイル指定子です。

final var calendar = new Calendar.Builder().build();

final var name1 = calendar.getDisplayNames(
        Calendar.ERA, Calendar.LONG, Locale.US);
System.out.println(name1); // {BC=0, AD=1}

final var name2 = calendar.getDisplayNames(
        Calendar.ERA, Calendar.LONG_STANDALONE, Locale.US);
System.out.println(name2); // {Before Christ=0, Anno Domini=1}

static final int MARCH

グレゴリオ暦とユリウス暦の年の3番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.MARCH, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.MARCH); // true

static final int MAY

グレゴリオ暦とユリウス暦の年の5番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.MAY, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.MAY); // true

static final int MILLISECOND

getおよびsetのためのフィールド値で、ミリ秒を示します。

final var calendar = new Calendar.Builder()
        .setTimeOfDay(14, 30, 59, 999)
        .build();

System.out.printf("%tT%n", calendar); // 14:30:59

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 14
System.out.println(calendar.get(Calendar.HOUR)); // 2

System.out.println(calendar.get(Calendar.MINUTE)); // 30
System.out.println(calendar.get(Calendar.SECOND)); // 59
System.out.println(calendar.get(Calendar.MILLISECOND)); // 999

static final int MINUTE

getおよびsetのためのフィールド値で、分を示します。

final var calendar = new Calendar.Builder()
        .setTimeOfDay(14, 30, 59, 999)
        .build();

System.out.printf("%tT%n", calendar); // 14:30:59

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 14
System.out.println(calendar.get(Calendar.HOUR)); // 2

System.out.println(calendar.get(Calendar.MINUTE)); // 30
System.out.println(calendar.get(Calendar.SECOND)); // 59
System.out.println(calendar.get(Calendar.MILLISECOND)); // 999

static final int MONDAY

月曜日を示すDAY_OF_WEEKフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 4)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Monday

final var value = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(value == Calendar.MONDAY); // true

static final int MONTH

getおよびsetのためのフィールド値で、月を示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 15)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-15

System.out.println(calendar.get(Calendar.YEAR)); // 2100
System.out.println(calendar.get(Calendar.MONTH) == Calendar.JANUARY); // true
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 15

static final int NARROW_FORMAT

フォーマットに使用される縮小名を示すgetDisplayNameおよびgetDisplayNamesのスタイル指示子です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var name1 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.LONG, Locale.US);
System.out.println(name1); // January

final var name2 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.SHORT, Locale.US);
System.out.println(name2); // Jan

final var name3 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.NARROW_FORMAT, Locale.US);
System.out.println(name3); // J

static final int NARROW_STANDALONE

独立して使用される縮小名を示すgetDisplayNameおよびgetDisplayNamesのスタイル指示子です。

final var calendar = new Calendar.Builder().build();

final var name1 = calendar.getDisplayNames(
        Calendar.ERA, Calendar.NARROW_FORMAT, Locale.US);
System.out.println(name1); // {A=1, B=0}

final var name2 = calendar.getDisplayNames(
        Calendar.ERA, Calendar.NARROW_STANDALONE, Locale.US);
System.out.println(name2); // {A=1, B=0}

static final int NOVEMBER

グレゴリオ暦とユリウス暦の年の11番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.NOVEMBER, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.NOVEMBER); // true

static final int OCTOBER

グレゴリオ暦とユリウス暦の年の10番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.OCTOBER, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.OCTOBER); // true

static final int PM

正午から深夜零時の前までの時間を示すAM_PMフィールドの値です。

final var calendar = new Calendar.Builder()
        .setTimeOfDay(10, 0, 0)
        .build();

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 10

System.out.println(calendar.get(Calendar.AM_PM) == Calendar.AM); // true
System.out.println(calendar.get(Calendar.AM_PM) == Calendar.PM); // false
final var calendar = new Calendar.Builder()
        .setTimeOfDay(17, 0, 0)
        .build();

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 17

System.out.println(calendar.get(Calendar.AM_PM) == Calendar.AM); // false
System.out.println(calendar.get(Calendar.AM_PM) == Calendar.PM); // true

static final int SATURDAY

土曜日を示すDAY_OF_WEEKフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 2)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Saturday

final var value = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(value == Calendar.SATURDAY); // true

static final int SECOND

getおよびsetのためのフィールド値で、秒を示します。

final var calendar = new Calendar.Builder()
        .setTimeOfDay(14, 30, 59, 999)
        .build();

System.out.printf("%tT%n", calendar); // 14:30:59

System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 14
System.out.println(calendar.get(Calendar.HOUR)); // 2

System.out.println(calendar.get(Calendar.MINUTE)); // 30
System.out.println(calendar.get(Calendar.SECOND)); // 59
System.out.println(calendar.get(Calendar.MILLISECOND)); // 999

static final int SEPTEMBER

グレゴリオ暦とユリウス暦の年の9番目の月を示すMONTHフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.SEPTEMBER, 1)
        .build();

System.out.println(calendar.get(Calendar.MONTH) == Calendar.SEPTEMBER); // true

static final int SHORT

SHORT_FORMATと同等の、getDisplayNameおよびgetDisplayNamesのスタイル指示子です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var name1 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.LONG, Locale.US);
System.out.println(name1); // January

final var name2 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.SHORT, Locale.US);
System.out.println(name2); // Jan

final var name3 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.NARROW_FORMAT, Locale.US);
System.out.println(name3); // J

static final int SHORT_FORMAT

フォーマットに使用される短い名前を示すgetDisplayNameおよびgetDisplayNamesのスタイル指示子です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var name1 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.SHORT, Locale.US);
System.out.println(name1); // Jan

final var name2 = calendar.getDisplayName(
        Calendar.MONTH, Calendar.SHORT_FORMAT, Locale.US);
System.out.println(name2); // Jan

static final int SHORT_STANDALONE

独立して使用される短い名前(月の略称やカレンダ・ヘッダーなど)を示すgetDisplayNameおよびgetDisplayNamesのスタイル指定子です。

final var calendar = new Calendar.Builder().build();

final var name1 = calendar.getDisplayNames(
        Calendar.ERA, Calendar.SHORT, Locale.US);
System.out.println(name1); // {AD=1, BC=0}

final var name2 = calendar.getDisplayNames(
        Calendar.ERA, Calendar.SHORT_STANDALONE, Locale.US);
System.out.println(name2); // {AD=1, BC=0}

static final int SUNDAY

日曜日を示すDAY_OF_WEEKフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 3)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Sunday

final var value = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(value == Calendar.SUNDAY); // true

static final int THURSDAY

木曜日を示すDAY_OF_WEEKフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 7)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Thursday

final var value = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(value == Calendar.THURSDAY); // true

protected long time

このカレンダで現在設定されている時間です。1970年1月1日0:00:00 (グリニッジ標準時)からの経過ミリ秒数で表されます。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

static final int TUESDAY

火曜日を示すDAY_OF_WEEKフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 5)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Tuesday

final var value = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(value == Calendar.TUESDAY); // true

static final int UNDECIMBER

13番目の月を示すMONTHフィールドの値です。

System.out.println(Calendar.UNDECIMBER); // 12

static final int WEDNESDAY

水曜日を示すDAY_OF_WEEKフィールドの値です。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 6)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Wednesday

final var value = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(value == Calendar.WEDNESDAY); // true

static final int WEEK_OF_MONTH

getおよびsetのためのフィールド値で、現在の月の週番号を示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.getFirstDayOfWeek() == Calendar.SUNDAY); // true
System.out.println(calendar.getMinimalDaysInFirstWeek()); // 1

final Supplier<String> dayOfWeekName = () -> {
    return calendar.getDisplayName(
            Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
};

System.out.println(dayOfWeekName.get()); // Friday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 1
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 1

calendar.set(Calendar.DAY_OF_MONTH, 2);

System.out.println(dayOfWeekName.get()); // Saturday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 1
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 1

calendar.set(Calendar.DAY_OF_MONTH, 3);

System.out.println(dayOfWeekName.get()); // Sunday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 2
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 2

calendar.set(Calendar.DAY_OF_MONTH, 9);

System.out.println(dayOfWeekName.get()); // Saturday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 2
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 2

calendar.set(Calendar.DAY_OF_MONTH, 10);

System.out.println(dayOfWeekName.get()); // Sunday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 3
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 3

calendar.set(Calendar.DAY_OF_MONTH, 31);

System.out.println(dayOfWeekName.get()); // Sunday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 6
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 6

calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
calendar.set(Calendar.DAY_OF_MONTH, 1);

System.out.println(dayOfWeekName.get()); // Monday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 1
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 6

calendar.set(Calendar.DAY_OF_MONTH, 7);

System.out.println(dayOfWeekName.get()); // Sunday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 2
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 7

static final int WEEK_OF_YEAR

getおよびsetのためのフィールド値で、現在の年の週番号を示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.getFirstDayOfWeek() == Calendar.SUNDAY); // true
System.out.println(calendar.getMinimalDaysInFirstWeek()); // 1

final Supplier<String> dayOfWeekName = () -> {
    return calendar.getDisplayName(
            Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
};

System.out.println(dayOfWeekName.get()); // Friday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 1
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 1

calendar.set(Calendar.DAY_OF_MONTH, 2);

System.out.println(dayOfWeekName.get()); // Saturday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 1
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 1

calendar.set(Calendar.DAY_OF_MONTH, 3);

System.out.println(dayOfWeekName.get()); // Sunday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 2
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 2

calendar.set(Calendar.DAY_OF_MONTH, 9);

System.out.println(dayOfWeekName.get()); // Saturday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 2
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 2

calendar.set(Calendar.DAY_OF_MONTH, 10);

System.out.println(dayOfWeekName.get()); // Sunday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 3
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 3

calendar.set(Calendar.DAY_OF_MONTH, 31);

System.out.println(dayOfWeekName.get()); // Sunday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 6
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 6

calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
calendar.set(Calendar.DAY_OF_MONTH, 1);

System.out.println(dayOfWeekName.get()); // Monday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 1
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 6

calendar.set(Calendar.DAY_OF_MONTH, 7);

System.out.println(dayOfWeekName.get()); // Sunday
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 2
System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 7

static final int YEAR

getおよびsetのためのフィールド値で、年を示します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 15)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-15

System.out.println(calendar.get(Calendar.YEAR)); // 2100
System.out.println(calendar.get(Calendar.MONTH) == Calendar.JANUARY); // true
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 15

static final int ZONE_OFFSET

getおよびsetのためのフィールド値で、GMTから直接計算したオフセットをミリ秒単位で示します。

final var zone = TimeZone.getTimeZone("America/Los_Angeles");

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .setTimeZone(zone)
        .build();

System.out.println(calendar.get(Calendar.ZONE_OFFSET)); // -28800000

コンストラクタ

Calendar ()

デフォルトのタイムゾーンおよびデフォルトのFORMATロケールを使用してCalendarを作成します。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

Calendar (TimeZone zone, Locale aLocale)

指定されたタイムゾーンおよびロケールを使用してカレンダを作成します。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

メソッド

abstract void add (int field, int amount)

カレンダのルールに基づいて、指定された時間量を指定されたカレンダ・フィールドに加算または減算します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-01

calendar.add(Calendar.DATE, 15);
System.out.printf("%tF%n", calendar); // 2100-01-16

calendar.add(Calendar.DATE, 30);
System.out.printf("%tF%n", calendar); // 2100-02-15

calendar.add(Calendar.MONTH, 100);
System.out.printf("%tF%n", calendar); // 2108-06-15

boolean after (Object when)

このCalendarが、指定されたObjectの表す時間よりあとの時間を表すかどうかを返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-01

final var calendar2 = new Calendar.Builder()
        .setDate(2099, Calendar.JANUARY, 1)
        .build();

final var calendar3 = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var calendar4 = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 2)
        .build();

System.out.printf("%tF%n", calendar2); // 2099-01-01
System.out.printf("%tF%n", calendar3); // 2100-01-01
System.out.printf("%tF%n", calendar4); // 2100-01-02

System.out.println(calendar.after(calendar2)); // true
System.out.println(calendar.after(calendar3)); // false
System.out.println(calendar.after(calendar4)); // false

boolean before (Object when)

このCalendarが、指定されたObjectの表す時間より前の時間を表すかどうかを返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-01

final var calendar2 = new Calendar.Builder()
        .setDate(2099, Calendar.JANUARY, 1)
        .build();

final var calendar3 = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var calendar4 = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 2)
        .build();

System.out.printf("%tF%n", calendar2); // 2099-01-01
System.out.printf("%tF%n", calendar3); // 2100-01-01
System.out.printf("%tF%n", calendar4); // 2100-01-02

System.out.println(calendar.before(calendar2)); // false
System.out.println(calendar.before(calendar3)); // false
System.out.println(calendar.before(calendar4)); // true

final void clear ()

このCalendarのすべてのカレンダ・フィールド値および時間値(元期からのミリ秒単位のオフセット)を未定義に設定します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.AUGUST, 10)
        .setTimeOfDay(14, 30, 59)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-10 14:30:59

calendar.clear();
System.out.printf("%tF %tT%n", calendar, calendar); // 1970-01-01 00:00:00

final void clear (int field)

このCalendarの指定されたカレンダ・フィールド値および時間値(元期からのミリ秒単位のオフセット)を未定義に設定します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.AUGUST, 5)
        .build();

System.out.printf("%tF%n", calendar); // 2100-08-05

calendar.clear(Calendar.YEAR);
System.out.printf("%tF%n", calendar); // 1970-08-05

calendar.clear(Calendar.MONTH);
System.out.printf("%tF%n", calendar); // 1970-01-05

calendar.clear(Calendar.DATE);
System.out.printf("%tF%n", calendar); // 1970-01-01

Object clone ()

このオブジェクトのコピーを作成して、返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.AUGUST, 5)
        .setTimeOfDay(14, 30, 59)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-05 14:30:59

if (calendar.clone() instanceof Calendar cloned) {
    System.out.printf("%tF %tT%n", cloned, cloned); // 2100-08-05 14:30:59
}

int compareTo (Calendar anotherCalendar)

2つのCalendarオブジェクトで表される時間値(元期からのミリ秒単位のオフセット)を比較します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-01

final var calendar2 = new Calendar.Builder()
        .setDate(2099, Calendar.JANUARY, 1)
        .build();

final var calendar3 = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var calendar4 = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 2)
        .build();

System.out.printf("%tF%n", calendar2); // 2099-01-01
System.out.printf("%tF%n", calendar3); // 2100-01-01
System.out.printf("%tF%n", calendar4); // 2100-01-02

System.out.println(calendar.compareTo(calendar2)); // 1
System.out.println(calendar.compareTo(calendar3)); // 0
System.out.println(calendar.compareTo(calendar4)); // -1

protected void complete ()

カレンダ・フィールドの未設定フィールドに値を入れます。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

protected abstract void computeFields ()

現在のミリ秒単位の時間値timeをfields[]内のカレンダ・フィールド値に変換します。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

protected abstract void computeTime ()

現在のカレンダ・フィールド値fields[]をミリ秒単位の時間値timeに変換します。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

boolean equals (Object obj)

このCalendarを指定されたObjectと比較します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-01

final var calendar2 = new Calendar.Builder()
        .setDate(2099, Calendar.JANUARY, 1)
        .build();

final var calendar3 = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var calendar4 = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 2)
        .build();

System.out.printf("%tF%n", calendar2); // 2099-01-01
System.out.printf("%tF%n", calendar3); // 2100-01-01
System.out.printf("%tF%n", calendar4); // 2100-01-02

System.out.println(calendar.equals(calendar2)); // false
System.out.println(calendar.equals(calendar3)); // true
System.out.println(calendar.equals(calendar4)); // false

int get (int field)

指定されたカレンダ・フィールドの値を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.DECEMBER, 31)
        .setTimeOfDay(14, 30, 59)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-12-31 14:30:59

System.out.println(calendar.get(Calendar.YEAR)); // 2100
System.out.println(calendar.get(Calendar.MONTH) == Calendar.DECEMBER); // true
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 31
System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 14
System.out.println(calendar.get(Calendar.MINUTE)); //30
System.out.println(calendar.get(Calendar.SECOND)); // 59

int getActualMaximum (int field)

このCalendarに時間値を指定して、指定のカレンダ・フィールドが取り得る最大値を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.getCalendarType()); // gregory
System.out.printf("%tF%n", calendar); // 2100-01-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
System.out.printf("%tF%n", calendar); // 2100-02-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 28

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

int getActualMinimum (int field)

このCalendarに時間値を指定した、指定のカレンダ・フィールドが取り得る最小値を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.getCalendarType()); // gregory
System.out.printf("%tF%n", calendar); // 2100-01-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
System.out.printf("%tF%n", calendar); // 2100-02-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 28

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

static Set<String> getAvailableCalendarTypes ()

実行環境でCalendarによってサポートされるすべてのカレンダ・タイプを含む変更不可能なSetを返します。

final var types = Calendar.getAvailableCalendarTypes();
for (final var type : types) {
    System.out.println(type);
}

// 結果
// ↓
//gregory
//buddhist
//japanese

static Locale[] getAvailableLocales ()

このクラスのgetInstanceメソッドがローカライズされたインスタンスを返すことのできるロケールすべての配列を返します。

final var locales = Calendar.getAvailableLocales();
Arrays.sort(locales, Comparator.comparing(Locale::toLanguageTag));

for (final var locale : locales) {
    System.out.println(locale);
}

// 結果
// ↓
//af
//af_ZA_#Latn
//af_NA
//af_ZA
//agq
//agq_CM
//agq_CM_#Latn
//ak
//ak_GH
//ak_GH_#Latn
//am
//...

String getCalendarType ()

このCalendarのカレンダ・タイプを返します。

final var calendar = new Calendar.Builder().build();

final var type = calendar.getCalendarType();
System.out.println(type); // gregory

String getDisplayName (int field, int style, Locale locale)

指定されたstyleとlocaleのカレンダfield値の文字列表現を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var longName = calendar.getDisplayName(
        Calendar.MONTH, Calendar.LONG, Locale.US);
System.out.println(longName); // January

final var shortName = calendar.getDisplayName(
        Calendar.MONTH, Calendar.SHORT, Locale.US);
System.out.println(shortName); // Jan

final var jpName = calendar.getDisplayName(
        Calendar.MONTH, Calendar.LONG, Locale.JAPAN);
System.out.println(jpName); // 1月

Map<String,Integer> getDisplayNames (int field, int style, Locale locale)

指定されたstyleおよびlocaleのカレンダfieldのすべての名前と、それに対応するフィールド値を含むMapを返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

final var longNames = calendar.getDisplayNames(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);

// {Monday=2, Thursday=5, Friday=6, Sunday=1, Wednesday=4, Tuesday=3, Saturday=7}
System.out.println(longNames);

final var shortNames = calendar.getDisplayNames(
        Calendar.DAY_OF_WEEK, Calendar.SHORT, Locale.US);

// {Thu=5, Tue=3, Wed=4, Sat=7, Fri=6, Sun=1, Mon=2}
System.out.println(shortNames);

final var jpNames = calendar.getDisplayNames(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.JAPAN);

// {木曜日=5, 日曜日=1, 火曜日=3, 金曜日=6, 土曜日=7, 月曜日=2, 水曜日=4}
System.out.println(jpNames);

int getFirstDayOfWeek ()

週の最初の曜日が何であるかを取得します。たとえば、米国ではSUNDAY、フランスではMONDAYです。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .setLocale(Locale.US)
        .build();

final var ret = calendar.getFirstDayOfWeek();
System.out.println(ret == Calendar.SUNDAY); // true
final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .setLocale(Locale.FRANCE)
        .build();

final var ret = calendar.getFirstDayOfWeek();
System.out.println(ret == Calendar.MONDAY); // true

abstract int getGreatestMinimum (int field)

このCalendarインスタンスで指定されたカレンダ・フィールドの最大最小値を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.getCalendarType()); // gregory
System.out.printf("%tF%n", calendar); // 2100-01-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
System.out.printf("%tF%n", calendar); // 2100-02-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 28

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

static Calendar getInstance ()

デフォルトのタイムゾーンおよびロケールを使用してカレンダを取得します。

final var calendar = Calendar.getInstance();

System.out.printf("%tF %tT%n", calendar, calendar); // 2024-06-29 16:23:37

static Calendar getInstance (Locale aLocale)

デフォルトのタイムゾーンおよび指定されたロケールを使用してカレンダを取得します。

final var calendar = Calendar.getInstance(Locale.US);

final var ret = calendar.getFirstDayOfWeek();
System.out.println(ret == Calendar.SUNDAY); // true
final var calendar = Calendar.getInstance(Locale.FRANCE);

final var ret = calendar.getFirstDayOfWeek();
System.out.println(ret == Calendar.MONDAY); // true

static Calendar getInstance (TimeZone zone)

指定されたタイムゾーンおよびデフォルトのロケールを使用してカレンダを取得します。

final var zone = TimeZone.getTimeZone("America/Los_Angeles");
final var calendar = Calendar.getInstance(zone);

System.out.printf("%tz%n", calendar); // -0700
System.out.println(calendar.get(Calendar.ZONE_OFFSET)); // -28800000

static Calendar getInstance (TimeZone zone, Locale aLocale)

指定されたタイムゾーンおよびロケールを使用してカレンダを取得します。

各パラメータについては、下記の使用例をご参照ください。

abstract int getLeastMaximum (int field)

このCalendarインスタンスで指定されたカレンダ・フィールドの最小最大値を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.getCalendarType()); // gregory
System.out.printf("%tF%n", calendar); // 2100-01-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
System.out.printf("%tF%n", calendar); // 2100-02-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 28

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

abstract int getMaximum (int field)

このCalendarインスタンスで指定されたカレンダ・フィールドの最大値を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.getCalendarType()); // gregory
System.out.printf("%tF%n", calendar); // 2100-01-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
System.out.printf("%tF%n", calendar); // 2100-02-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 28

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

int getMinimalDaysInFirstWeek ()

年の最初の週に必要な最小日数を取得します。たとえば、最初の週が、年の第1週の1日目を含むものとして定義されている場合、このメソッドは1を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

{
    final var name = calendar.getDisplayName(
            Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
    System.out.println(name); // Friday

    System.out.println(calendar.getMinimalDaysInFirstWeek()); // 1
    System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 1

    calendar.setMinimalDaysInFirstWeek(7);

    System.out.println(calendar.getMinimalDaysInFirstWeek()); // 7
    System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 52
}

abstract int getMinimum (int field)

このCalendarインスタンスで指定されたカレンダ・フィールドの最小値を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

System.out.println(calendar.getCalendarType()); // gregory
System.out.printf("%tF%n", calendar); // 2100-01-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

calendar.set(Calendar.MONTH, Calendar.FEBRUARY);
System.out.printf("%tF%n", calendar); // 2100-02-01

{
    System.out.println(calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); // 28

    System.out.println(calendar.getMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getMaximum(Calendar.DAY_OF_MONTH)); // 31

    System.out.println(calendar.getGreatestMinimum(Calendar.DAY_OF_MONTH)); // 1
    System.out.println(calendar.getLeastMaximum(Calendar.DAY_OF_MONTH)); // 28
}

final Date getTime ()

このCalendarの時間値(元期からのミリ秒単位のオフセット)を表すDateオブジェクトを返します。

final var zone = TimeZone.getTimeZone("UTC");
final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .setTimeZone(zone)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-01-01 00:00:00
System.out.println(calendar.getTimeInMillis()); // 4102444800000

final var date = calendar.getTime();
System.out.println(date.getTime()); // 4102444800000

long getTimeInMillis ()

このCalendarの時間値をミリ秒で返します。

final var zone = TimeZone.getTimeZone("UTC");
final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .setTimeZone(zone)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-01-01 00:00:00
System.out.println(calendar.getTimeInMillis()); // 4102444800000

final var date = calendar.getTime();
System.out.println(date.getTime()); // 4102444800000

TimeZone getTimeZone ()

タイムゾーンを取得します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.AUGUST, 1)
        .setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
        .build();

final var zone1 = calendar.getTimeZone();
System.out.println(zone1.getID()); // America/Los_Angeles

calendar.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));

final var zone2 = calendar.getTimeZone();
System.out.println(zone2.getID()); // Asia/Tokyo

int getWeeksInWeekYear ()

このCalendarで表される暦週の基準年に含まれる週数を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();
System.out.println(calendar.getCalendarType()); // gregory

if (calendar.isWeekDateSupported()) {
    System.out.println(calendar.getWeeksInWeekYear()); // 52
    System.out.println(calendar.getWeekYear()); // 2100
}

int getWeekYear ()

このCalendarで表される暦週の基準年を返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();
System.out.println(calendar.getCalendarType()); // gregory

if (calendar.isWeekDateSupported()) {
    System.out.println(calendar.getWeeksInWeekYear()); // 52
    System.out.println(calendar.getWeekYear()); // 2100
}

int hashCode ()

このカレンダのハッシュ・コードを返します。

final var zone = TimeZone.getTimeZone("UTC");
final var calendar = new Calendar.Builder()
        .setTimeZone(zone)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 1970-01-01 00:00:00
System.out.println(calendar.hashCode()); // 577755

calendar.set(2100, Calendar.JANUARY, 1);

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-01-01 00:00:00
System.out.println(calendar.hashCode()); // 751504224

protected final int internalGet (int field)

指定されたカレンダ・フィールドの値を返します。

protectedです。
独自にサブクラスを作ることは少ないと思いますので、コード例は割愛します。

boolean isLenient ()

日付/時間の解釈が厳密でないかどうかを指定します。

final var calendar = new Calendar.Builder().build();
System.out.println(calendar.isLenient()); // true

{
    calendar.set(2100, Calendar.JANUARY, 100);
    final var date = calendar.getTime();
    System.out.printf("%tF%n", date); // 2100-04-10
}

calendar.setLenient(false);
System.out.println(calendar.isLenient()); // false

try {
    calendar.set(2100, Calendar.JANUARY, 100);
    final var date = calendar.getTime();
} catch (IllegalArgumentException e) {
    System.out.println("IllegalArgumentException! : " + e.getMessage());
}

// 結果
// ↓
//IllegalArgumentException! : DAY_OF_MONTH

final boolean isSet (int field)

指定されたカレンダ・フィールドが値セットを保持するかどうかを判定します(getメソッド呼出しでトリガーされる内部フィールド計算によって値が設定された場合を含む)。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.AUGUST, 15)
        .build();

System.out.printf("%tF%n", calendar); // 2100-08-15

System.out.println(calendar.isSet(Calendar.YEAR)); // true
System.out.println(calendar.isSet(Calendar.MONTH)); // true
System.out.println(calendar.isSet(Calendar.DAY_OF_MONTH)); // true

calendar.clear(Calendar.YEAR);
System.out.printf("%tF%n", calendar); // 1970-08-15

System.out.println(calendar.isSet(Calendar.YEAR)); // false
System.out.println(calendar.isSet(Calendar.MONTH)); // true
System.out.println(calendar.isSet(Calendar.DAY_OF_MONTH)); // true

boolean isWeekDateSupported ()

このCalendarが暦週日付をサポートしているかどうかを返します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();
System.out.println(calendar.getCalendarType()); // gregory

if (calendar.isWeekDateSupported()) {
    System.out.println(calendar.getWeeksInWeekYear()); // 52
    System.out.println(calendar.getWeekYear()); // 2100
}

abstract void roll (int field, boolean up)

大きいフィールドを変更せずに指定された時間フィールドの1つの単位の時間を上または下に加算または減算します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.OCTOBER, 1)
        .build();

System.out.printf("%tF%n", calendar); // 2100-10-01

calendar.roll(Calendar.MONTH, true);
System.out.printf("%tF%n", calendar); // 2100-11-01

calendar.roll(Calendar.MONTH, true);
System.out.printf("%tF%n", calendar); // 2100-12-01

calendar.roll(Calendar.MONTH, true);
System.out.printf("%tF%n", calendar); // 2100-01-01
final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 2)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-02

calendar.roll(Calendar.DAY_OF_MONTH, false);
System.out.printf("%tF%n", calendar); // 2100-01-01

calendar.roll(Calendar.DAY_OF_MONTH, false);
System.out.printf("%tF%n", calendar); // 2100-01-31

void roll (int field, int amount)

大きいフィールドを変更せずに、指定された(符号付きの)量を指定されたカレンダ・フィールドに加えます。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JULY, 1)
        .build();

System.out.printf("%tF%n", calendar); // 2100-07-01

calendar.roll(Calendar.MONTH, 3);
System.out.printf("%tF%n", calendar); // 2100-10-01

calendar.roll(Calendar.MONTH, 2);
System.out.printf("%tF%n", calendar); // 2100-12-01

calendar.roll(Calendar.MONTH, 1);
System.out.printf("%tF%n", calendar); // 2100-01-01
final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 3)
        .build();

System.out.printf("%tF%n", calendar); // 2100-01-03

calendar.roll(Calendar.DAY_OF_MONTH, -2);
System.out.printf("%tF%n", calendar); // 2100-01-01

calendar.roll(Calendar.DAY_OF_MONTH, -1);
System.out.printf("%tF%n", calendar); // 2100-01-31

void set (int field, int value)

指定されたカレンダ・フィールドを指定された値に設定します。

final var calendar = new Calendar.Builder().build();
System.out.printf("%tF %tT%n", calendar, calendar); // 1970-01-01 00:00:00

calendar.set(Calendar.YEAR, 2100);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-01-01 00:00:00

calendar.set(Calendar.MONTH, Calendar.AUGUST);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-01 00:00:00

calendar.set(Calendar.DAY_OF_MONTH, 15);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-15 00:00:00

calendar.set(Calendar.HOUR_OF_DAY, 14);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-15 14:00:00

calendar.set(Calendar.MINUTE, 30);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-15 14:30:00

calendar.set(Calendar.SECOND, 59);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-15 14:30:59

final void set (int year, int month, int date)

カレンダ・フィールドYEAR、MONTH、およびDAY_OF_MONTHの値を設定します。

final var calendar = new Calendar.Builder().build();
System.out.printf("%tF %tT%n", calendar, calendar); // 1970-01-01 00:00:00

calendar.set(2100, Calendar.AUGUST, 15);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-15 00:00:00

final void set (int year, int month, int date, int hourOfDay, int minute)

カレンダ・フィールドYEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、およびMINUTEの値を設定します。

final var calendar = new Calendar.Builder().build();
System.out.printf("%tF %tT%n", calendar, calendar); // 1970-01-01 00:00:00

calendar.set(2100, Calendar.AUGUST, 15, 14, 30);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-15 14:30:00

final void set (int year, int month, int date, int hourOfDay, int minute, int second)

フィールドYEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY、MINUTEおよびSECONDの値を設定します。

final var calendar = new Calendar.Builder().build();
System.out.printf("%tF %tT%n", calendar, calendar); // 1970-01-01 00:00:00

calendar.set(2100, Calendar.AUGUST, 15, 14, 30, 59);
System.out.printf("%tF %tT%n", calendar, calendar); // 2100-08-15 14:30:59

void setFirstDayOfWeek (int value)

週の最初の曜日が何であるかを設定します。たとえば、米国ではSUNDAY、フランスではMONDAYです。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 3)
        .setLocale(Locale.US)
        .build();

final var name = calendar.getDisplayName(
        Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
System.out.println(name); // Sunday

System.out.println(calendar.getFirstDayOfWeek() == Calendar.SUNDAY); // true
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 2

calendar.setFirstDayOfWeek(Calendar.MONDAY);

System.out.println(calendar.getFirstDayOfWeek() == Calendar.MONDAY); // true
System.out.println(calendar.get(Calendar.WEEK_OF_MONTH)); // 1

void setLenient (boolean lenient)

日付/時間の解釈を厳密に行うかどうかを設定します。

final var calendar = new Calendar.Builder().build();
System.out.println(calendar.isLenient()); // true

{
    calendar.set(2100, Calendar.JANUARY, 100);
    final var date = calendar.getTime();
    System.out.printf("%tF%n", date); // 2100-04-10
}

calendar.setLenient(false);
System.out.println(calendar.isLenient()); // false

try {
    calendar.set(2100, Calendar.JANUARY, 100);
    final var date = calendar.getTime();
} catch (IllegalArgumentException e) {
    System.out.println("IllegalArgumentException! : " + e.getMessage());
}

// 結果
// ↓
//IllegalArgumentException! : DAY_OF_MONTH

void setMinimalDaysInFirstWeek (int value)

年の最初の週に必要な最小日数を設定します。たとえば、最初の週が、年の最初の月の最初の日を含むものとして定義されている場合は、値1でこのメソッドを呼び出します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .build();

{
    final var name = calendar.getDisplayName(
            Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.US);
    System.out.println(name); // Friday

    System.out.println(calendar.getMinimalDaysInFirstWeek()); // 1
    System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 1

    calendar.setMinimalDaysInFirstWeek(7);

    System.out.println(calendar.getMinimalDaysInFirstWeek()); // 7
    System.out.println(calendar.get(Calendar.WEEK_OF_YEAR)); // 52
}

final void setTime (Date date)

このCalendarの時間を、指定されたDateに設定します。

final var zone = TimeZone.getTimeZone("UTC");
final var calendar = new Calendar.Builder()
        .setTimeZone(zone)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 1970-01-01 00:00:00

final var date = new Date(4102444800000L);
calendar.setTime(date);

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-01-01 00:00:00
System.out.println(calendar.getTimeInMillis()); // 4102444800000

void setTimeInMillis (long millis)

Calendarの現在の時間を、指定されたlong値から設定します。

final var zone = TimeZone.getTimeZone("UTC");
final var calendar = new Calendar.Builder()
        .setTimeZone(zone)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 1970-01-01 00:00:00

calendar.setTimeInMillis(4102444800000L);

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-01-01 00:00:00
System.out.println(calendar.getTimeInMillis()); // 4102444800000

void setTimeZone (TimeZone value)

指定されたタイムゾーン値を使用してタイムゾーンを設定します。

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.AUGUST, 1)
        .setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"))
        .build();

final var zone1 = calendar.getTimeZone();
System.out.println(zone1.getID()); // America/Los_Angeles

calendar.setTimeZone(TimeZone.getTimeZone("Asia/Tokyo"));

final var zone2 = calendar.getTimeZone();
System.out.println(zone2.getID()); // Asia/Tokyo

void setWeekDate (int weekYear, int weekOfYear, int dayOfWeek)

Calendarの日付を、指定された日付指定子で設定 - 週の年、年の週および曜日。

final var calendar = new Calendar.Builder().build();
System.out.printf("%tF%n", calendar); // 1970-01-01

calendar.setWeekDate(2100, 1, Calendar.FRIDAY);
System.out.printf("%tF%n", calendar); // 2100-01-01

calendar.setWeekDate(2100, 1, Calendar.SATURDAY);
System.out.printf("%tF%n", calendar); // 2100-01-02

calendar.setWeekDate(2100, 2, Calendar.SATURDAY);
System.out.printf("%tF%n", calendar); // 2100-01-09

calendar.setWeekDate(2100, 10, Calendar.MONDAY);
System.out.printf("%tF%n", calendar); // 2100-03-01

final Instant toInstant ()

このオブジェクトをInstantに変換します。

final var zone = TimeZone.getTimeZone("UTC");

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .setTimeZone(zone)
        .build();

System.out.printf("%tF %tT%n", calendar, calendar); // 2100-01-01 00:00:00
System.out.println(calendar.get(Calendar.ZONE_OFFSET)); // 0

final var instant = calendar.toInstant();
System.out.println(instant); // 2100-01-01T00:00:00Z

String toString ()

カレンダの文字列表現を返します。

final var zone = TimeZone.getTimeZone("UTC");

final var calendar = new Calendar.Builder()
        .setDate(2100, Calendar.JANUARY, 1)
        .setTimeZone(zone)
        .build();

final var str = calendar.toString();

// java.util.GregorianCalendar[time=4102444800000,areFieldsSet=true,
// areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo
// [id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],
// firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2100,MONTH=0,
// WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=1,DAY_OF_WEEK=6,
// DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,
// MILLISECOND=0,ZONE_OFFSET=0,DST_OFFSET=0]
System.out.println(str);

関連記事

ページの先頭へ