使用https://www.threeten.org/threeten-extra庫。
在計算該月的第一個星期日時,給定周數和年份,我注意到如果我使用 2018 年和第 53 周,我得到的結果是第一個星期日 2018-12-02。
然而,2018 年不是 53 周的一年,所以我想知道是我做錯了什么還是 2018 年有什么特別之處?我沒有看到周開始日期或其他 53 周條件得到滿足,但我可能錯過了一些東西。
在其他測驗中,如 2011 年(也不是第 53 周),日期邏輯按預期將結果包裝到 2012-01-01(明年第一周的第一個星期日)。
2020 年、2015 年和 2019 年(所有 53 周的年份)顯示的結果值與相應年份 12 月的預期相同。
這是代碼:
YearWeek yw = YearWeek.of(year, weekNumber);
//Get the date of the first day of that week.
LocalDate ld = yw.atDay( DayOfWeek.MONDAY ) ;
// Use a TemporalAdjuster to get nth day-of-week of that month date’s month.
TemporalAdjuster ta = TemporalAdjusters.dayOfWeekInMonth( 1 , DayOfWeek.SUNDAY ) ;
// TemporalAdjuster ta = TemporalAdjusters.firstDayOfMonth();
LocalDate firstSunday = ld.with( ta ) ;
return firstSunday.toString();
建議?
uj5u.com熱心網友回復:
這是做什么YearWeek.of的:
從基于周的年和周獲取 YearWeek 的實體。
如果周為 53 并且一年沒有 53 周,則選擇下一年的第一周。
因此,對于(2018, 53),它選擇 2019 年的第一周,因為 2018 年只有 52 周。這是從 2018 年 12 月 31 日開始到 2019 年 1 月 6 日結束的一周。
然后,您將獲得本周的星期一,即 2018-12-31,并將此日期調整為該月的第一個星期日。這里的“月份”是 12 月,結果是 2018-12-02。
同樣,對于(2011, 53),您會得到 2012 年的第一周,因為 2011 年只有 52 周。但與 2019 年不同的是,這是從 2012-01-02 開始到 2012-01-08 結束的一周,所以沒有問題。
那么,2018 年有什么“特別”之處呢?它的最后一周在一年的最后一天之前結束,我想?這導致明年的第一周從 12 月開始。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/474896.html
標籤:爪哇
上一篇:java.util.LinkedHashMap不能轉換為類com.profile.model.Profile-SpringBoot
