Calendar中add()和roll()函数的用法
一、取某个时间点后的整点时刻。例如1984年7月7日15:23:05后的整点时刻即为1984-07-07 16:00:00。
实现如下:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, 1);//小时上加1
calendar.set(Calendar.MINUTE, 0);//分钟设为0
calendar.set(Calendar.SECOND, 0);//秒钟设为0

二、取某个日历之前的某个月。例如要取2002年1月12号之前1个月的时间,应该是2001年12月12日。
Calendar calendar = Calendar.getInstance();
calendar.set(2002, 0, 12);//代表2002年1月12日
calendar.add(Calendar.MONTH, -1);//这样就将日期设置成了2001年12月12日。
System.out.println(calendar.getTime().toString());

但是这种情况如果用roll()来实现。如以下代码:
Calendar calendar = Calendar.getInstance();
calendar.set(2002, 0, 12);//代表2002年1月12日
calendar.roll(Calendar.MONTH, -1);//这样就将日期设置成了2002年12月12日。
System.out.println(calendar.getTime().toString());

结论:roll()函数处理,只会对相应的字段进行处理不会智能的对其它字段也进行逻辑上的改变。
        add()函数会在逻辑上改变其它字段,使结果正确。

注:Calendar中的Month是从0-11的,0代表1月,11代表12月。

http://blog.sina.com.cn/s/blog_62c89b450100sau9.html

Calendar中add函数和roll函数的用法及区别的更多相关文章

  1. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

  2. java Queue中 add/offer,element/peek,remove/poll区别

    转自https://blog.csdn.net/u012050154/article/details/60572567 java Queue中 add/offer,element/peek,remov ...

  3. python中filter(),map()和reduce()的用法及区别

    先看filter()方法 print(list(filter(lambda n : n % 2 == 1, range(20))))# 结果 [1, 3, 5, 7, 9, 11, 13, 15, 1 ...

  4. js中innerHTML、outerHTML与innerText的用法与区别

    ____________________________________________________________________________________________________ ...

  5. (C++)STL排序函数sort和qsort的用法与区别

    主要内容: 1.qsort的用法 2.sort的用法 3.qsort和sort的区别 qsort的用法: 原 型: void qsort(void *base, int nelem, int widt ...

  6. 【转】Java中super和this的几种用法与区别

    1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位.   class Base {   Base() {   System.out.println("Base&qu ...

  7. js中return false,return,return true的用法及区别

    首先return作为返回关键字,他有以下两种返回方式 1.返回控制与函数结果 语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 2.返回控制无函数结果 语 ...

  8. js中的break,continue和return的用法及区别

    为什么要说个?好像很简单,但是我也会迷糊,不懂有时候为什么要用return,然而break和continue也经常和他放在一起. 所以就一起来说一说,这三个看起来很简单,却常常会出错的关键词的具体用法 ...

  9. C#中Cookie,Session,Application的用法与区别?

    1.Application 储存在服务端,没有时间限制,服务器关闭即销毁(前提是自己没写销毁方法) 2.Session 储存在服务端,客户端(浏览器)关闭即销毁(若长时间不使用 且 浏览器未关闭的情况 ...

随机推荐

  1. 微软官方的Unity支持组件

    https://unity.codeplex.com/ http://www.nuget.org/packages/Unity.Interception/ http://www.nuget.org/p ...

  2. 【Xamarin破解补丁找不到?】

    前面的博文,推荐竟然那么点数目?下面的这个网址是个各种破解资源的站点,里面说不定有你想要的. http://onhax.net/ 要学会在搜索框搜索... 好吧,其实里面就有Xamarin的破解补丁 ...

  3. android的原理--为什么我们不需要手动关闭程序

    内容搜集自网络,有所删改       不用在意剩余内存的大小,其实很多人都是把使用其他系统的习惯带过来来了.android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系.如果你知 ...

  4. Hive 12、Hive优化

    要点:优化时,把hive sql当做map reduce程序来读,会有意想不到的惊喜. 理解hadoop的核心能力,是hive优化的根本. 长期观察hadoop处理数据的过程,有几个显著的特征: 1. ...

  5. nyoj 234 吃土豆

    描述 Bean-eating * grid. Now you want to eat the beans and collect the qualities, but everyone must ob ...

  6. PC-常见问题-清除浮动

    常用:.clear{clear:both;height:0px;overflow:hidden;}>最优浮动闭合方案(这是我们推荐的): .clearfix:after{content:&quo ...

  7. hdu4267 A Simple Problem with Integers

    A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others) Memory Limit: 32768/32768 K (J ...

  8. android学习--TabHost选项卡组件

    TabHost是一种非常有用的组件,TabHost能够非常方便地在窗体上放置多个标签页,每一个标签页获得了一个与外部容器同样大小的组件摆放区域.在手机系统的应用类似"未接电话".& ...

  9. [Immutable.js] Working with Subsets of an Immutable.js Map()

    Immutable.js offers methods to break immutable structures into subsets much like Array--for instance ...

  10. Java / Android H基于ttp多线程下载的实现

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/26994463 有个朋友须要个多线程如今的样例,就帮忙实现了.在此分享下~ 先说下 ...