Java 获取周起始日期方法修正:解决计算偏差问题

以下代码片段展示了如何修正Java中获取周起始日期的方法,解决计算结果比实际早一天的问题。

原始代码:

public static LocalDate getStartDateOfWeek(int year, int week) {
    LocalDate firstDayOfYear = LocalDate.of(year, 1, 1);
    LocalDate firstDayOfFirstWeek = firstDayOfYear.with(TemporalAdjusters.firstInMonth(firstDayOfYear.getDayOfWeek()));
    LocalDate startDate = firstDayOfFirstWeek.plusWeeks(week - 1);
    return startDate;
}

问题:

该方法计算的起始日期比实际早一天。

解决方案:

可以在计算结束后,将 startDate 加上一天,从而得到正确的起始日期。

修改后的代码:

public static LocalDate getStartDateOfWeek(int year, int week) {
    LocalDate firstDayOfYear = LocalDate.of(year, 1, 1);
    LocalDate firstDayOfFirstWeek = firstDayOfYear.with(TemporalAdjusters.firstInMonth(firstDayOfYear.getDayOfWeek()));
    LocalDate startDate = firstDayOfFirstWeek.plusWeeks(week - 1).plusDays(1);
    return startDate;
}

通过添加 plusDays(1),我们确保了 startDate 指向正确的周起始日期。

注意:

  • 以上代码假设一周从周一开始。
  • 如果您需要调整一周的起始日期,可以修改 TemporalAdjusters.firstInMonth(firstDayOfYear.getDayOfWeek()) 中的 firstDayOfYear.getDayOfWeek() 为其他 DayOfWeek 枚举值。

希望本文对您有所帮助!

Java 获取周起始日期方法修正:解决计算偏差问题

原文地址: https://www.cveoy.top/t/topic/oZt3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录