gpt4 book ai didi

java - 日历 - 获取上个月的最后一天

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:46:31 30 4
gpt4 key购买 nike

我想获取上个月的最后一天。但这似乎不起作用:

Calendar cal = Calendar.getInstance();
Integer lastDay = cal.getInstance().getActualMaximum(cal.DAY_OF_MONTH);

cal.add(Calendar.MONTH, -1);

Integer prevMonth = cal.get(Calendar.MONTH);
Integer prevMonthYear = cal.get(Calendar.YEAR);
Integer lastDayPrevMonth = cal.getInstance().getActualMaximum(cal.DAY_OF_MONTH);

System.out.println("Previous month was: " + prevMonth + "-" + prevMonthYear);
System.out.println("Last day in previous month was: " + lastDayPrevMonth);
System.out.println("Last day in this month is: " + lastDay);

这个输出:

I/System.out﹕: Previous month was 10-2015
I/System.out﹕: Last day in previous month was 31
I/System.out﹕: Last day in this month is 31

现在是上个月,即 11 月 (10) 日,现在是 12 月 (11) 日。这个月的最后一天也是正确的,但显然,上个月的最后一天不是31,而是30。

当我执行 add -1 操作时,为什么第二个 getActualMaximum 给出与第一个相同的“月末最后一天”?

最佳答案

当前代码中的问题是您多次调用返回当前日期的 Calendar.getInstance() 方法。

要获取上个月最后一天的 Calendar,您可以执行以下操作:

public static void main(String... args) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));

System.out.println(cal.get(Calendar.MONTH));
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
}

它从当前月份减去一个月,并将月份中的第几天设置为其最大值,通过 getActualMaximum 获得.请注意,月份在 Calendar 中是从 0 开始的,因此一月实际上是 0。

关于java - 日历 - 获取上个月的最后一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34076518/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com