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
.
.
.
同理,下一个星期,上一个星期等,都可以这样实现。
.
.
以上方法在月份和日期的最后一天,同样适用
下面,通过断点,一步一步的跟踪
.
进入以下方法,断点,通过debug模式进入,并且通过F7查看
Calendar calendar = Calendar.getInstance();
一直F7
..疯狂F7
..
直到…
.
0-based
.
现在清楚了吧,他在初始化的时候,将0设置成第一个
.
在GregorianCalendar.java的2426行
.
看了下面那张图片,你就明白了
.
.end