有些不懂得地方 ca.set(Calendar.DAY_OF_MONTH, 1);int prevDays = ca.get(Calendar.DAY_OF_WEEK) - 1; ca.add(Calendar.DAY_OF_MONTH, -prevDays);是什么意思呢?
ca.set(Calendar.DAY_OF_MONTH, 1);是将日期设置到当月的第一天
int prevDays = ca.get(Calendar.DAY_OF_WEEK) - 1;获得的是数字(星期几 - 1),日历是从星期日为起始展示的,而当月的第一天不一定就是星期日,前面也许还有几天,这就需要吧要展示的起始日期向前挪动。
对于ca.get(Calendar.DAY_OF_WEEK),获取的值情况如下:
SUN(1) MON(2) TUE(3) WED(4) THU(5) FRI(6) SAT(7)
可以看到prevDays恰好为起始日期需要向前挪动的值。
然后使用ca.add(Calendar.DAY_OF_MONTH, -prevDays);即可将展示的其实日期设置为正确的数值