6

Java のすべての曜日を含む既存の列挙型があるかどうかを知りたいです。カレンダーを使用して時間ロジックを処理していますが、このようなものは見当たりませんでした (自分で作成することもできましたが、既存のものを使用したいです)。threeten プロジェクトも見ましたが、まだアルファ版です。曜日を含む列挙型は非常に些細なことであり、列挙型のドキュメントで太陽によって示されているため、何かが既に存在する可能性があると考えていました。何か案は ?

4

3 に答える 3

2

カレンダー クラスには、次のものがあります。

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Sunday.
 */
public final static int SUNDAY = 1;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Monday.
 */
public final static int MONDAY = 2;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Tuesday.
 */
public final static int TUESDAY = 3;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Wednesday.
 */
public final static int WEDNESDAY = 4;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Thursday.
 */
public final static int THURSDAY = 5;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Friday.
 */
public final static int FRIDAY = 6;

/**
 * Value of the {@link #DAY_OF_WEEK} field indicating
 * Saturday.
 */
public final static int SATURDAY = 7;

(ソース: java.util.Calendar)

JDK 1.1 で Calendar が導入されたときは列挙型がなかったため、列挙型ではありません。

于 2013-08-20T07:57:01.403 に答える
2

のような厄介な古い日時クラスjava.util.Calendarは現在レガシーであり、java.time クラスに取って代わられています。

java.time.DayOfWeek列挙

Java にはjava.time.DayOfWeekenum が含まれるようになりました。

単なる整数 1 ~ 7 ではなく、この列挙型のオブジェクトを渡して、コードをより自己文書化し、タイプ セーフを提供し、有効な値の範囲を確保します。

invoices.printReportForDayOfWeek( DayOfWeek.MONDAY );

ISO 8601 規格に従って、月曜日から日曜日までの番号は 1 ~ 7 です。

を呼び出して、その日のローカライズされた名前を取得しgetDisplayNameます。

String output = DayOfWeek.MONDAY.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ;  // Or Locale.US, etc.

複数の曜日を追跡するには、EnumSet(の実装Set) またはEnumMap(の実装) を使用しMapます。

Set<DayOfWeek> weekend = EnumSet.of( DayOfWeek.SATURDAY , DayOfWeek.SUNDAY ) ;
…
Boolean todayIsWeekend = weekend.contains( LocalDate.now( ZoneId.of( "America/Montreal" ) ).getDayOfWeek() );

java.time について

java.timeフレームワークは、Java 8 以降に組み込まれています。java.util.Dateこれらのクラスは、 、.Calendar、 &などの古い面倒な日時クラスに取って代わりますjava.text.SimpleDateFormat

Joda -Timeプロジェクトは現在メンテナンス モードにあり、java.time への移行を推奨しています。

詳細については、 Oracle チュートリアルを参照してください。また、Stack Overflow で多くの例と説明を検索してください。

java.time 機能の多くは、ThreeTen-Backportで Java 6 および 7 にバックポートされ、さらにThreeTenABPでAndroidに適合されています。

ThreeTen -Extraプロジェクトは、追加のクラスで java.time を拡張します。このプロジェクトは、java.time. IntervalYearWeek、などの便利なクラスがここYearQuarterにあります。

于 2016-08-17T20:44:59.467 に答える