获取日期的周数(星期三开始的一周)

Getting the week number for a date (week starting on Wednesday)

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 的结果缺少什么?

如果您希望根据 ISO-8601, where current week is week 30 获得输出,则需要遵循以下步骤:

Week number according to the ISO-8601 standard, weeks starting on Monday. The first week of the year is the week that contains that year's first Thursday (='First 4-day week').

这是由WeekFields.ISO实现的。

相反,如果您希望一周从 WEDNESDAY 开始,您只需将 minimalDaysInFirstWeek1 更改为 4(='First 4-day week'):

LocalDate date = LocalDate.now();
WeekFields weekFields = WeekFields.of(DayOfWeek.WEDNESDAY, 4);
int weekNo = date.get(weekFields.weekOfWeekBasedYear());
System.out.println("Week No " + weekNo);