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

JAVA获取下一年,下个月,下一天;月份为何以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

.

.

.

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

.

.

以上方法在月份和日期的最后一天,同样适用

java获取去年所有日期 java获取下一年_JAVA


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

.

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

Calendar calendar = Calendar.getInstance();

java获取去年所有日期 java获取下一年_java  获取下一年_02


一直F7

..疯狂F7

..

直到…

.

java获取去年所有日期 java获取下一年_JAVA_03

0-based

.

现在清楚了吧,他在初始化的时候,将0设置成第一个

.

在GregorianCalendar.java的2426行


.

看了下面那张图片,你就明白了

java获取去年所有日期 java获取下一年_java  获取下一年_04

java获取去年所有日期 java获取下一年_System_05

.

.end