Java : DayOfWeek (曜日) - API使用例

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


概要

クラス構成

DayOfWeek は曜日を表す列挙型です。

final var date = LocalDate.of(2021, 12, 17);
final var formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
System.out.println(date.format(formatter)); // 2021年12月17日金曜日

final var week = date.getDayOfWeek();
System.out.println(week); // FRIDAY

列挙型定数

FRIDAY

「曜日」金曜日のシングルトン・インスタンス。

System.out.println(DayOfWeek.FRIDAY); // FRIDAY
System.out.println(DayOfWeek.FRIDAY.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 金曜日

MONDAY

「曜日」月曜日のシングルトン・インスタンス。

System.out.println(DayOfWeek.MONDAY); // MONDAY
System.out.println(DayOfWeek.MONDAY.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 月曜日

SATURDAY

「曜日」土曜日のシングルトン・インスタンス。

System.out.println(DayOfWeek.SATURDAY); // SATURDAY
System.out.println(DayOfWeek.SATURDAY.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 土曜日

SUNDAY

「曜日」日曜日のシングルトン・インスタンス。

System.out.println(DayOfWeek.SUNDAY); // SUNDAY
System.out.println(DayOfWeek.SUNDAY.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 日曜日

THURSDAY

「曜日」木曜日のシングルトン・インスタンス。

System.out.println(DayOfWeek.THURSDAY); // THURSDAY
System.out.println(DayOfWeek.THURSDAY.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 木曜日

TUESDAY

「曜日」火曜日のシングルトン・インスタンス。

System.out.println(DayOfWeek.TUESDAY); // TUESDAY
System.out.println(DayOfWeek.TUESDAY.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 火曜日

WEDNESDAY

「曜日」水曜日のシングルトン・インスタンス。

System.out.println(DayOfWeek.WEDNESDAY); // WEDNESDAY
System.out.println(DayOfWeek.WEDNESDAY.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 水曜日

メソッド

Temporal adjustInto (Temporal temporal)

この「曜日」を使用するように指定された時間的オブジェクトを調整します。

final var temporal = LocalDate.of(2021, 12, 17);
final var formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
System.out.println(temporal.format(formatter)); // 2021年12月17日金曜日

final var ret1 = DayOfWeek.THURSDAY.adjustInto(temporal);
System.out.println(ret1); // 2021-12-16

final var ret2 = DayOfWeek.FRIDAY.adjustInto(temporal);
System.out.println(ret2); // 2021-12-17

final var ret3 = DayOfWeek.SATURDAY.adjustInto(temporal);
System.out.println(ret3); // 2021-12-18

static DayOfWeek from (TemporalAccessor temporal)

時間的オブジェクトからDayOfWeekのインスタンスを取得します。

final var temporal = LocalDate.of(2021, 12, 17);
final var formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
System.out.println(temporal.format(formatter)); // 2021年12月17日金曜日

System.out.println(DayOfWeek.from(temporal)); // FRIDAY
final var temporal = LocalDate.of(2021, 12, 18);
final var formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
System.out.println(temporal.format(formatter)); // 2021年12月18日土曜日

System.out.println(DayOfWeek.from(temporal)); // SATURDAY

int get (TemporalField field)

指定されたフィールドの値をこの曜日からintとして取得します。

このAPIを使うより、getValue メソッドを使うことをおすすめします。

System.out.println(DayOfWeek.FRIDAY.isSupported(ChronoField.DAY_OF_WEEK)); // true
System.out.println(DayOfWeek.FRIDAY.get(ChronoField.DAY_OF_WEEK)); // 5

System.out.println(DayOfWeek.SUNDAY.isSupported(ChronoField.DAY_OF_WEEK)); // true
System.out.println(DayOfWeek.SUNDAY.get(ChronoField.DAY_OF_WEEK)); // 7
System.out.println(DayOfWeek.FRIDAY.isSupported(ChronoField.YEAR)); // false
//DayOfWeek.FRIDAY.get(ChronoField.YEAR); // UnsupportedTemporalTypeException

String getDisplayName (TextStyle style, Locale locale)

「Mon」や「Friday」など、テキスト表現を取得します。

final var locale = Locale.getDefault();
System.out.println(locale); // ja_JP

System.out.println(DayOfWeek.FRIDAY.getDisplayName(TextStyle.FULL, locale)); // 金曜日
System.out.println(DayOfWeek.FRIDAY.getDisplayName(TextStyle.SHORT, locale)); // 金
System.out.println(DayOfWeek.FRIDAY.getDisplayName(TextStyle.NARROW, locale)); // 金

long getLong (TemporalField field)

指定されたフィールドの値をこの曜日からlongとして取得します。

このAPIを使うより、getValue メソッドを使うことをおすすめします。

System.out.println(DayOfWeek.FRIDAY.isSupported(ChronoField.DAY_OF_WEEK)); // true
System.out.println(DayOfWeek.FRIDAY.getLong(ChronoField.DAY_OF_WEEK)); // 5

System.out.println(DayOfWeek.SUNDAY.isSupported(ChronoField.DAY_OF_WEEK)); // true
System.out.println(DayOfWeek.SUNDAY.getLong(ChronoField.DAY_OF_WEEK)); // 7
System.out.println(DayOfWeek.FRIDAY.isSupported(ChronoField.YEAR)); // false
//DayOfWeek.FRIDAY.getLong(ChronoField.YEAR); // UnsupportedTemporalTypeException

int getValue ()

曜日のint値を取得します。

System.out.println(DayOfWeek.MONDAY.getValue()); // 1
System.out.println(DayOfWeek.TUESDAY.getValue()); // 2
System.out.println(DayOfWeek.WEDNESDAY.getValue()); // 3
System.out.println(DayOfWeek.THURSDAY.getValue()); // 4
System.out.println(DayOfWeek.FRIDAY.getValue()); // 5
System.out.println(DayOfWeek.SATURDAY.getValue()); // 6
System.out.println(DayOfWeek.SUNDAY.getValue()); // 7

boolean isSupported (TemporalField field)

指定されたフィールドがサポートされているかどうかをチェックします。

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

DayOfWeek minus (long days)

この日から指定された日数だけ遡った曜日を返します。

final var week = DayOfWeek.FRIDAY;
System.out.println(week.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 金曜日

final var ret1 = week.minus(1);
System.out.println(ret1.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 木曜日

final var ret2 = week.minus(2);
System.out.println(ret2.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 水曜日

final var ret3 = week.minus(6);
System.out.println(ret3.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 土曜日

final var ret4 = week.minus(7);
System.out.println(ret4.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 金曜日

static DayOfWeek of (int dayOfWeek)

int値からDayOfWeekのインスタンスを取得します。

System.out.println(DayOfWeek.of(1)); // MONDAY
System.out.println(DayOfWeek.of(2)); // TUESDAY
System.out.println(DayOfWeek.of(3)); // WEDNESDAY
System.out.println(DayOfWeek.of(4)); // THURSDAY
System.out.println(DayOfWeek.of(5)); // FRIDAY
System.out.println(DayOfWeek.of(6)); // SATURDAY
System.out.println(DayOfWeek.of(7)); // SUNDAY

DayOfWeek plus (long days)

この日から指定された日数が経過した後の曜日を返します。

final var week = DayOfWeek.FRIDAY;
System.out.println(week.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 金曜日

final var ret1 = week.plus(1);
System.out.println(ret1.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 土曜日

final var ret2 = week.plus(2);
System.out.println(ret2.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 日曜日

final var ret3 = week.plus(6);
System.out.println(ret3.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 木曜日

final var ret4 = week.plus(7);
System.out.println(ret4.getDisplayName(TextStyle.FULL, Locale.JAPAN)); // 金曜日

<R> R query (TemporalQuery<R> query)

指定された問合せを使用してこの曜日を問い合わせます。

System.out.println(DayOfWeek.FRIDAY.query(TemporalQueries.precision())); // Days

ValueRange range (TemporalField field)

指定されたフィールドの有効な値の範囲を取得します。

System.out.println(DayOfWeek.FRIDAY.range(ChronoField.DAY_OF_WEEK)); // 1 - 7

static DayOfWeek valueOf (String name)

指定された名前を持つこのクラスのenum定数を返します。

System.out.println(DayOfWeek.valueOf("FRIDAY")); // FRIDAY
System.out.println(DayOfWeek.valueOf("SATURDAY")); // SATURDAY
System.out.println(DayOfWeek.valueOf("SUNDAY")); // SUNDAY

static DayOfWeek[] values ()

この列挙クラスの定数を含む配列を宣言されている順序で 返します。

for (final var week : DayOfWeek.values()) {
    System.out.println(week);
}

// 結果
// ↓
//MONDAY
//TUESDAY
//WEDNESDAY
//THURSDAY
//FRIDAY
//SATURDAY
//SUNDAY

Enumで宣言されたメソッド

clone, compareTo, describeConstable, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf

Java API 使用例 : Enum」をご参照ください。


関連記事

ページの先頭へ