如何计算上个月的日数?

Cat*_*ysm 1 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);
Run Code Online (Sandbox Code Playgroud)

所以,我试着将上个月的日数计算为

    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);
Run Code Online (Sandbox Code Playgroud)

我到30了我的控制台.我错了什么?这个月是八月七月应该产生的上个月31.

Men*_*ena 6

您是从Calendar常量中减去而不是从该常量中减去的值.

更改:

calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH - 1), 1);
Run Code Online (Sandbox Code Playgroud)

附:

calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) - 1, 1);
Run Code Online (Sandbox Code Playgroud)

更简单的解决方案

calendar.roll(Calendar.MONTH, false);
Run Code Online (Sandbox Code Playgroud)

......将"滚动"一个月"向下".