博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慎用Calendar的add,set,roll方法
阅读量:6124 次
发布时间:2019-06-21

本文共 903 字,大约阅读时间需要 3 分钟。

hot3.png

Calendar c = Calendar.getInstance();c.set(2014, Calendar.MARCH, 31);c.add(Calendar.MONTH, 13);System.out.println(c.getTime());// 2015-04-30c.set(2014, Calendar.MARCH, 31);c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 13);System.out.println(c.getTime());// 2015-05-01c.set(2014, Calendar.MARCH, 31);c.roll(Calendar.MONTH, 13);System.out.println(c.getTime());//2014-04-30

ADD方法

以调整的单位为基点(本例中为月),较大的单位(年)会发生借位、进位。 较小的单位会往小调整

本例中,2014-03-31,加上13个月,年份会进位为2015年。 4月31日是不存在的,所以往小调整为4月30日。

比较典型的运用场景是,日历的按月切换。

如下图,当前日期为2014-03-31,点击【下一月】按钮时,日期会变成2014-04-30.

195415_OZvt_113917.jpg

 

SET方法

所有的单位都会往大调整

本例中,2014-03-31,加上13个月,年份会进位为2015年。 4月31日是不存在的,所以往大调整为5月1日。

ROLL方法

以调整的单位为基点(本例中为月),较大的单位(年)不会发生改变。 较小的单位会往小调整。 

本例中,2014-03-31,加上13个月,年份依然为2014年。 4月31日是不存在的,所以往小调整为4月30日。

roll 单词本身有滚动的意思。一个很典型的应用场景就是:手机上的日期滚动设置。

如下图,日会根据年、月来判断出日的取值范围,然后在1~31之间无限循环滚动,但并不会影响到年、月的值。

假如是调整年、月的话,日就会发生相应的变化了。

195413_rYox_113917.jpg

 

 

 

转载于:https://my.oschina.net/jinceon/blog/194830

你可能感兴趣的文章
Windows Server 2016-Hyper-V 2016新增功能
查看>>
VMware虚拟化技术培训(5) 安装vCenterServer
查看>>
Windows DHCP Server基于MAC地址过滤客户端请求实现IP地址的分配
查看>>
命令查询每个文件文件数
查看>>
《跟阿铭学Linux》第8章 文档的压缩与打包:课后习题与答案
查看>>
新手用Linux做代理服务器 三招搞定
查看>>
Android应用程序线程消息循环模型分析(4)
查看>>
Word 2003启动后如何彻底去掉缩略图
查看>>
创建一个.Net项目
查看>>
报表服务入门(实验4)创建共享数据源
查看>>
Lync 小技巧-39-批量-设置-AD-分机-手机-启用-Lync-设置-Lync-分机
查看>>
二、服务器优化(1)实现负载平衡
查看>>
iOS开发那些事-iOS应用本地化-资源文件本地化
查看>>
企业要寻找自己的生态环境
查看>>
RAC表决磁盘管理和维护
查看>>
python下运行报"SyntaxError: Non-ASCII character '/xe6' "错误解决方法
查看>>
MyBatis一对多双向关联——MyBatis学习笔记之七
查看>>
给《网络协议本质论》读者们的一封信:解读三类读者如何读好这本书
查看>>
Skype For Business Server 2015 启用离线消息
查看>>
46.异地(Azure)容灾-准备工作
查看>>