首页 > 解决方案 > 获取日期的星期数(从星期三开始的星期)

问题描述

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 的结果,我在这里缺少什么?

标签: javajava-8week-number

解决方案


如果您根据ISO-8601预期输出,当前周第 30 周,您需要遵循以下步骤:

根据 ISO-8601 标准的周数,从星期一开始的周数。一年中的第一周是包含该年第一个星期四的周(='第一个 4 天周')。

这是由WeekFields.ISO.

相反,如果您希望一周从 开始WEDNESDAY,您只需将minimalDaysInFirstWeekfrom更改14(='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);

推荐阅读