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-07-29日期。我希望第30周不会,但我会31周。
我在这里想得到30的结果是什么?
答案 0 :(得分:3)
如果您希望根据ISO-8601输出,其中current week是week 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);