広告

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

Calendar (Java SE 20 & JDK 20) の使用例まとめです。
だいたいのメソッドを網羅済みです。
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が正午より前であるかあとであるかを示します。

このメソッドの使用例は、AM にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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のためのフィールド値で、月の日を示します。

このフィールドは DAY_OF_MONTH と同等です。
API使用例はそちらをご参照ください。

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のためのフィールド値で、時間を示します。

このメソッドの使用例は、HOUR にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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のスタイル指示子です。

このフィールドは LONG と同等です。
API使用例はそちらをご参照ください。

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のためのフィールド値で、ミリ秒を示します。

このメソッドの使用例は、HOUR にまとめて記載しました。
そちらのAPI使用例をご参照ください。

static final int MINUTE

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

このメソッドの使用例は、HOUR にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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のためのフィールド値で、月を示します。

このメソッドの使用例は、DAY_OF_MONTH にまとめて記載しました。
そちらのAPI使用例をご参照ください。

static final int NARROW_FORMAT

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

このメソッドの使用例は、LONG にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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フィールドの値です。

このメソッドの使用例は、AM にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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のためのフィールド値で、秒を示します。

このメソッドの使用例は、HOUR にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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のスタイル指示子です。

このメソッドの使用例は、LONG にまとめて記載しました。
そちらのAPI使用例をご参照ください。

static final int SHORT_FORMAT

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

このフィールドは SHORT と同等です。
API使用例はそちらをご参照ください。

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のためのフィールド値で、現在の年の週番号を示します。

このメソッドの使用例は、WEEK_OF_MONTH にまとめて記載しました。
そちらのAPI使用例をご参照ください。

static final int YEAR

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

このメソッドの使用例は、DAY_OF_MONTH にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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

final var cloned = calendar.clone();
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に時間値を指定した、指定のカレンダ・フィールドが取り得る最小値を返します。

このメソッドの使用例は、getActualMaximum(int field) にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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インスタンスで指定されたカレンダ・フィールドの最大最小値を返します。

このメソッドの使用例は、getActualMaximum(int field) にまとめて記載しました。
そちらのAPI使用例をご参照ください。

static Calendar getInstance ()

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

final var calendar = Calendar.getInstance();

System.out.printf("%tF %tT%n", calendar, calendar); // 2023-09-17 16:18:34

static Calendar getInstance (Locale aLocale)

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

関連 : getInstance()

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)

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

関連 : getInstance()

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インスタンスで指定されたカレンダ・フィールドの最小最大値を返します。

このメソッドの使用例は、getActualMaximum(int field) にまとめて記載しました。
そちらのAPI使用例をご参照ください。

abstract int getMaximum (int field)

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

このメソッドの使用例は、getActualMaximum(int field) にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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インスタンスで指定されたカレンダ・フィールドの最小値を返します。

このメソッドの使用例は、getActualMaximum(int field) にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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の時間値をミリ秒で返します。

このメソッドの使用例は、getTime() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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で表される暦週の基準年を返します。

このメソッドの使用例は、getWeeksInWeekYear() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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が暦週日付をサポートしているかどうかを返します。

このメソッドの使用例は、getWeeksInWeekYear() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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)

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

このメソッドの使用例は、isLenient() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

void setMinimalDaysInFirstWeek (int value)

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

このメソッドの使用例は、getMinimalDaysInFirstWeek() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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)

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

このメソッドの使用例は、getTimeZone() にまとめて記載しました。
そちらのAPI使用例をご参照ください。

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);

関連記事

ページの先頭へ