获取日期的周数(星期三开始的一周)
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
开始,您只需将 minimalDaysInFirstWeek
从 1
更改为 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);
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
开始,您只需将 minimalDaysInFirstWeek
从 1
更改为 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);