マヘンドラ:
LocalDate initial = LocalDate.now();
DayOfWeek dayOfWeek = DayOfWeek.WEDNESDAY;
WeekFields weekFields = WeekFields.of(dayOfWeek, 1);
int weekNo = date.get(weekFields.weekOfWeekBasedYear());
System.out.println("Week No"+weekNo);
私は、日付2018年7月29日のために上記のコードを使用しています。私は週にノー30期待して、私は31を取得します。
私は30の結果を得るためにここに欠けているのですか?
トマシュLinkowski:
あなたがに応じて出力を予想した場合、ISO-8601、現在の週がある週30、あなたはこれに従う必要があるでしょう:
ISO-8601規格に準拠した週数は、週は月曜日から始まります。年の最初の週は、その年の最初の木曜日(=「第4日の週」)を含んで週です。
これはによって実装されますWeekFields.ISO
。
代わり場合は、あなたが開始する週たいWEDNESDAY
、あなただけ変更する必要があるminimalDaysInFirstWeek
から1
に4
(=「最初の4日間の週」):
LocalDate date = LocalDate.now();
WeekFields weekFields = WeekFields.of(DayOfWeek.WEDNESDAY, 4);
int weekNo = date.get(weekFields.weekOfWeekBasedYear());
System.out.println("Week No " + weekNo);