如何计算上个月的天数?

问题描述 投票:0回答:2

我想检索上个月的天数。我可以通过

获取当月的天数
    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
。我有什么错吗?这个月是八月,上个月七月应该会产生
31

java calendar
2个回答
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);

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


0
投票

java.time.YearMonth

避免存在严重缺陷的遗留日期时间类。切勿使用

Calendar
Date
DateFormat
等。仅使用 java.time 类。

要表示特定年份的特定月份,请使用

YearMonth
类。

© www.soinside.com 2019 - 2024. All rights reserved.