1 回答

TA贡献1796条经验 获得超7个赞
检查 ChronoField 或 IsoFields 以获得合适的方式来获取您想要使用的日历系统的星期。LocalDate用作“基础”值的对象应具有预期年份的周值。
int year = 2019;
int weekNumber = 1;
LocalDate localDate = LocalDate.of(year, 2, 1)
.with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, weekNumber)
.with(ChronoField.DAY_OF_WEEK, DayOfWeek.SUNDAY.getValue());
选择第一个日期是有意义的。使用LocalDate.of(year, 1, 1)将给出可以属于上一年最后一周的一天,同样适用,LocalDate.now()但仅限于给定的时间段。
LocalDate.of(2017, 1, 1)
.with(IsoFields.WEEK_OF_WEEK_BASED_YEAR, 26)
.with(ChronoField.DAY_OF_WEEK, DayOfWeek.SUNDAY.getValue());
// 2016-07-03
LocalDate.of(2017, 1, 1).get(IsoFields.WEEK_OF_WEEK_BASED_YEAR);
// 52
因此,从第 52 周跳到第 26 周将给出日期 2016-07-03,因为日期是通过第 52 周和第 26 周之间的子跟踪时间计算的。
添加回答
举报