如何计算上个月的日数?

时间:2014-08-26 11:18:14

标签: java calendar

我想检索上个月的日计数。

我可以获得当月的日数
    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

1 个答案:

答案 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);

...将“滚动”一个月“向下”。