Java : Calendar (カレンダー) - API使用例
Calendar (Java SE 21 & JDK 21) の使い方まとめです。
だいたいのメソッドを網羅済みです。
API仕様書のおともにどうぞ。
注意
- Calendar クラスは、非推奨(@Deprecated) にこそなっていませんが、古い API です。
代わりに、java.time パッケージにある LocalDateTime や ZonedDateTime などの新しい 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)
指定されたタイムゾーンおよびロケールを使用してカレンダを取得します。
各パラメータについては、下記の使用例をご参照ください。
- zone パラメータ : getInstance(TimeZone zone)
- aLocale パラメータ : getInstance(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);
関連記事
- 日付・時刻の基本
- Date, CalendarではなくLocalDateTime, ZonedDateTimeを使おう
- 文字列と日付・時刻の変換
- 日付と時刻、曜日の計算
- 現在時刻(日時)の取得いろいろ
- 現在の曜日(DayOfWeek)を取得
- ZoneIdとZoneOffsetの違い
- API 使用例
- ChronoLocalDate
- ChronoLocalDateTime
- ChronoZonedDateTime
- Clock (時計)
- Date (日付・時刻)
- DateTimeException (日付・時刻の例外)
- DateTimeParseException (日付・時刻の解析例外)
- DayOfWeek (曜日)
- Duration (時間の量)
- Era (紀元)
- Instant (時点)
- InstantSource
- JapaneseDate (和暦を使った日付)
- LocalDate (日付・タイムゾーンなし)
- LocalDateTime (日時・タイムゾーンなし)
- LocalTime (時刻・タイムゾーンなし)
- Month (月)
- MonthDay (月・日)
- OffsetDateTime (日時・オフセットあり)
- OffsetTime (時刻・オフセットあり)
- Period (日付の量)
- Temporal
- TemporalAccessor
- TemporalAdjuster (日付・時刻の調整)
- TemporalAdjusters (日付・時刻の調整ユーティリティ)
- TimeZone (タイムゾーン)
- Year (年)
- YearMonth (年・月)
- ZonedDateTime (日時・タイムゾーンあり)
- ZoneId (タイムゾーンID)
- ZoneOffset (タイムゾーン・オフセット)