我想检索上个月的日计数。
我可以获得当月的日数 Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), 1);
int currentMonthDaysCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(currentMonthDaysCount);
所以,我试图将上个月的日数计算为
Calendar calendar = Calendar.getInstance();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH - 1), 1);
int previousMonthDaysCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(previousMonthDaysCount);
我的控制台上有30
。我错了什么?本月 8月,上个月 7月应生成31
。
答案 0 :(得分:6)
您要从Calendar
常数中减去,而不是从该常数中减去该值。
变化:
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH - 1), 1);
使用:
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) - 1, 1);
更简单的解决方案:
calendar.roll(Calendar.MONTH, false);
...将“滚动”一个月“向下”。