Calendar 中add() 的 roll() 方法的区别

Posted zsslll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Calendar 中add() 的 roll() 方法的区别相关的知识,希望对你有一定的参考价值。

Calendar c = Calendar.getInstance();
c.set(2017,0,7,15,40);
System.out.println("now day: " + c.getTime());
c.roll(c.DATE, 35);
System.out.println("roll 35 day: " + c.getTime());

运行结果:

now day: Sat Jan 07 15:40:20 CST 2017
roll 35 day: Wed Jan 11 15:40:20 CST 2017

 

此时可以看到 月份不会改变,而是在日期上滚动35天后从7号改变为了11号。(由于1月有31天当滚动到31日后会从1号开始计时)

Calendar c = Calendar.getInstance();
c.set(2017,0,7,15,40);
System.out.println("now day: " + c.getTime());
c.add(c.DATE, 35);
System.out.println("add 35 day: " + c.getTime());

运行结果:

now day: Sat Jan 07 15:40:04 CST 2017
add 35 day: Sat Feb 11 15:40:04 CST 2017

此时可以看到月份由1月变化到了2月,当添加天数的时候,1月份以后填满则会填充到二月份。

add和roll的却别就在于此,roll只是单纯的在日期上作出滚动,不会影响年、月。add则会像我们自然处理时间一样,1月走完了,自然过渡到2月。

 

以上是关于Calendar 中add() 的 roll() 方法的区别的主要内容,如果未能解决你的问题,请参考以下文章

Calendar的add()方法介绍

java 中 日期怎么相加减

Java 之 JDK 1.8 新增日期时间类型

6.4 Java 8的日期时间类

关于Calendar add

java:Calendar的add方法固定作的是加操作吗?