Java のすべての曜日を含む既存の列挙型があるかどうかを知りたいです。カレンダーを使用して時間ロジックを処理していますが、このようなものは見当たりませんでした (自分で作成することもできましたが、既存のものを使用したいです)。threeten プロジェクトも見ましたが、まだアルファ版です。曜日を含む列挙型は非常に些細なことであり、列挙型のドキュメントで太陽によって示されているため、何かが既に存在する可能性があると考えていました。何か案は ?
3 に答える
カレンダー クラスには、次のものがあります。
/**
* 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 が導入されたときは列挙型がなかったため、列挙型ではありません。
のような厄介な古い日時クラスjava.util.Calendar
は現在レガシーであり、java.time クラスに取って代わられています。
java.time.DayOfWeek
列挙
Java にはjava.time.DayOfWeek
enum が含まれるようになりました。
単なる整数 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. Interval
、YearWeek
、などの便利なクラスがここYearQuarter
にあります。