Java 获取周起始日期方法修正:解决计算偏差问题
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枚举值。
希望本文对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/oZt3 著作权归作者所有。请勿转载和采集!