当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《日历-获取上个月的最后一天》经验,为你挑选了1个好方法。

我想得到上个月的最后一天.但这似乎不起作用:

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

所以它是上个月,也就是十一月(10),现在是12月(11).这个月的最后一天也是正确的,但显然,上个月的最后一天不是31,而是30.

getActualMaximum当我添加-1时,为什么第二个给出与第一个相同的"最后一天"?



1> Tunaki..:

当前代码中的问题是您多次调用该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。请注意,月份是从0开始的,Calendar因此一月实际上是0。

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有