web-dev-qa-db-ja.com

LocalDateの週番号を取得(Java 8)

私は完全なLocalDateの週番号を次の形式で取得しようとしています:

dd.MM.yyy

Java 8 Date API wichがWeek Numberを返し、アルゴリズムを作成しようとしましたが、機能しませんでした。

25
YvesHendseth

1つの小さな警告。これはまだテストしていませんが、 WeekFields および LocalDate.get 、次のようにする必要があります。

LocalDate date = ...;
// Or use a specific locale, or configure your own rules
WeekFields weekFields = WeekFields.of(Locale.getDefault()); 
int weekNumber = date.get(weekFields.weekOfWeekBasedYear());
43
Mark Rotteveel

Mark Rotteveelの答えはほぼ間違いなく、クラスWeekFieldsに混乱の可能性があるような例です(サウンドメソッドの名前は似ていますが、直感的な民生用の使用法から外れています)。適切なコードには別のフィールドが必要です。

LocalDate date = LocalDate.now();
TemporalField woy = WeekFields.of(Locale.getDefault()).weekOfWeekBasedYear(); 
int weekNumber = date.get(woy);

この SO-post に関する同様の議論、特に@kleopatraの答えに関する議論とコメントも参照してください。

42
Meno Hochschild