JAVA获取下一年,下个月,下一天;月份为何以0开始?

通过JAVA常用类Calendar,获取下一年,下一月,下一天,以及月份为什么是0开始

活不多说,直接上代码:

public static void main(String[] args) {

        Calendar calendar = Calendar.getInstance();
        Date date = new Date();
        System.out.println("今天是:" + DateUtil.DateToString(date, DateUtil.YYYYMMDDHHMMSS));
        calendar.setTime(date);
        //获取下一年
        calendar.add(Calendar.YEAR, 1);
        System.out.println("下一年是:" + calendar.get(Calendar.YEAR));
        //获取下一月
        calendar.add(Calendar.MONTH, 1);
        System.out.println("下一月是:" + calendar.get(Calendar.MONTH) + 1);//月份是以0开始,所以要加1
        //获取下一天
        calendar.add(Calendar.DATE, 1);
        System.out.println("明天是:" + calendar.get(Calendar.DATE));

    }

控制台输出:

今天是:2020-09-08 16:10:42
下一年是:2021
下一月是:10
明天是:9

Process finished with exit code 0

以上不难看出,直接通过Calendar的**add()**方法,后面填上参数,即可实现输出下一年月日。
需要注意的是:月份是从0开始的,所以要+1
.
.
.

同理,下一个星期,上一个星期等,都可以这样实现。

.
.

以上方法在月份和日期的最后一天,同样适用
在这里插入图片描述
.
.
.
.
.

下面说明月份的特殊性

.
.
下面,通过断点,一步一步的跟踪

.
.
.

进入以下方法,断点,通过debug模式进入,并且通过F7查看

Calendar calendar = Calendar.getInstance();

在这里插入图片描述
.
.
.

一直F7
.
.

疯狂F7

.
.

直到…
.
在这里插入图片描述
0-based
.
现在清楚了吧,他在初始化的时候,将0设置成第一个

.
在GregorianCalendar.java的2426行
.
.
.

那么为什么要把月的第一个设置成0?

看了下面那张图片,你就明白了
在这里插入图片描述
在这里插入图片描述

.
.
.
.
.
.
.
.end
特别鸣谢:@xxl

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值