背景:在使用Calendar實例api getWeekYear()讀取年份,在跨年那周程序會像炸彈那樣爆炸。例如今年最后一周,前3天是2019年的,后四天是2020年的。在周日(一周開始)程序采用getWeekYear()方法讀取的年份是2020的,但實際上周日是屬於2019年的。程序去讀取數據庫2020年份的數據,就會因為讀取不到報錯(沒做判斷空指針情況)
原因:Calendar類有一個minimalDaysInFirstWeek字段 該值默認設置是4
minimalDaysInFirstWeek=4是什么意思尼?其實個人理解就是個閾值,跨年那個周,n天是在新的一年的(如2020年 有4天是落在2020年的) 當n>=minimalDaysInFirstWeek時候 調用getWeekYear() 讀取到的年份就會是2020年(就算當前日期是屬於2019年30號)
如果程序本意是讀取2019年的數據的,那么就會莫名其妙地讀取到2020年數據。(這是讀取不到的)
解決: 使用Calendar類 get(Calendar.YEAR)獲取年份