2013-08-20 10 views
6

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

+1

いつもの日時APIをお探しの場合は、http://www.joda.org/joda-time/をご覧ください。曜日の列挙型がない場合は、しかし、。なぜあなたは1つ必要ですか? –

+0

@PhilippReichart私は毎日の列を持つJSPでテーブルを表示したいと思います。 – fxm

+0

これはi18nについてですか? – atamanroman

答えて

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で導入されたときに何が存在しないからです。

+0

私は毎日アクセスできることを知っています。私が望むのは、それを自分で作成することなくすべての日を含むリストです。また、私はintではなくString値を持っていたいと思います。 – fxm

+0

@fxm、あなたがそれを望むならば、自分でenumを作るべきです、それは時間がかかりません。前述のように、列挙型がJavaに来る前に 'Calendar'クラスが導入されました。 – SpongeBobFan

+1

私はそうするでしょう、これは既に存在しないような奇妙なものです。 – fxm

2

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

java.time.DayOfWeek列挙

Javaは今java.time.DayOfWeek列挙型が含まれています。

単純な整数1-7ではなく、この列挙型のオブジェクトを渡して、コードの自己記述性を高め、型安全性を提供し、有効な値の範囲を確保します。

invoices.printReportForDayOfWeek(DayOfWeek.MONDAY); 

ナンバリングは、ISO 8601規格に従って、月曜日から日曜日までです。

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

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

EnumSetSetの実装)またはEnumMapMapの実装)を使用し、複数の曜日を追跡すること。 java.timeについて

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

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

maintenance modeJoda-Timeプロジェクトは、現在java.timeへの移行を推奨しています。

詳細については、Oracle Tutorialを参照してください。そして、多くの例と説明のためにStack Overflowを検索してください。

java.time機能ThreeTen-BackportでJava 6 & 7に戻って、移植、さらにThreeTenABPAndroidに適合されているの多く。

ThreeTen-Extraプロジェクトは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、IntervalYearWeekYearQuarterなどの便利なクラスがあります。

関連する問題