java calendar 设置小时_Java Calendar.set 方法设置时间的问题
因项目需要,需要遍历一年中的其中几个月,获得每个月的用户数量。 变量有:开始时间--startDate,结束时间--endDate。
逻辑很简单:获取到开始时间的月份和结束时间的月份,然后得到月份差值,进行for循环遍历,遍历的时候判断用户注册的时间是否在这个月里,然后得出结果。
关键就在于:判断用户注册的时间是否在这个月里。
想了一个办法:假如一个用户的注册时间是 2016-09-05 22:05 ,那么判断这个用户的 注册时间是否小于 [2016-09-30 23:59] 就可以了。
好了,逻辑清楚了,问题来了:怎么获取每个月份的最大时间(每个月的最后一天、最后一小时、最后一分钟、最后一秒)呢?
查了查Java的api 发现官方推荐使用 java.util.Calendar; 而java.util.Date; 里面的很多方法都已经不被推荐使用了。 比如:Date.getDate();
Calendar很好用 采用的是单例模式,通过:Calendar.getInstance();获取他的实例。使用Calendar.setTime(Date date);设置时间 。
代码:
1 //获取实例
2 Calendar calendarInstance =Calendar.getInstance();3 //设置时间
4 calendarInstance.setTime(startTime);
好了重点来了,假如当前Calendar实例的时间是:2016-09-05 22:05 ,则变化到最大的时间为:2016-09-30 23:59
看代码:
1 //设置每月的最大天数
2 calendarInstance.set(Calendar.DAY_OF_MONTH, calendarInstance.getActualMaximum(Calendar.DAY_OF_MONTH));3 //设置每天的最大小时
4 calendarInstance.set(Calendar.HOUR_OF_DAY, calendarInstance.getActualMaximum(Calendar.HOUR_OF_DAY));5 //设置每小时最大分钟
6 calendarInstance.set(Calendar.MINUTE, calendarInstance.getActualMaximum(Calendar.MINUTE));7 //设置每分钟最大秒
8 calendarInstance.set(Calendar.SECOND, calendarInstance.getActualMaximum(Calendar.SECOND));
Calendar 的set方法可以设置时间中的值比如:
Calendar.SECOND 秒
Calendar.MINUTE 分钟
等等
Calendar 的getActualMaximum方法可以得到单位时间的最大值。比如:每月最多有几天,每天最多几个小时等等
这样就得到了已知时间在单位时间(每个月)内的最大值。同理单位时间为每天的话,类似的道理。
这还没完呢。
整个程序里只有两个变量,开始和结束的时间,中间的时候需要手动加。
2016-09-05 22:05的下个月的最大时间应该是:2016-10-31 23:59
我一开始用的方法是:
calendarInstance.set(Calendar.MONTH, calendarInstance.get(Calendar.MONTH) + 1 );
发现bug,当开始时间的月份有31天的话,这样得出的结果就是下下个月 比如:开始时间--2016-05-31 23:59 转换后的时间是--2016-07-01 23:59
怎么会多一个月?
想来想去猜测是这个原因:5月有31天。而6月只有30天 如果直接使用 set方法设置月份的话,就得到 6月31号 但是6月没有31号于是 Calendar 自动进位,就变成了 7月01号。
解决办法是:使用Calendar.add(int field, int amount); 第一个参数是 字段(月份,天,小时..),第二个参数是 增量。
这样就可以直接从 5月31号 变成6月30号了。
欢迎加入 java开发群:497036534。
java calendar 设置小时_Java Calendar.set 方法设置时间的问题相关推荐
- java calendar 设置小时_Java Calendar类的时间操作
Java Calendar 类时间操作,这也许是创建日历和管理最简单的一个方案,示范代码很简单,演示了获取时间,日期时间的累加和累减,以及比较. 注意事项: Calendar 的 month 从 0 ...
- java date 减小时_java 获取本机当前时间并对小时任意加减
展开全部 代码如下: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; publ ...
- 【Groovy】Groovy 方法调用 ( Java 类成员及 setter 和 getter 方法设置 | Groovy 类自动生成成员的 getter 和 setter 方法 )
文章目录 一.Java 类成员及 setter 和 getter 方法设置 二.Groovy 类自动生成成员的 getter 和 setter 方法 一.Java 类成员及 setter 和 gett ...
- Java 中array.size()_Java ArrayDeque size()方法与示例
ArrayDeque类size()方法size()方法在java.lang包中可用. size()方法用于返回存储在此双端队列中的大小(元素数). size()方法是一个非静态方法,只能通过类对象访问 ...
- java paint的使用_java使用paint方法画图的方法
java使用paint方法画图的方法 发布时间:2020-08-24 12:06:15 来源:亿速云 阅读:98 作者:小新 小编给大家分享一下java使用paint方法画图的方法,希望大家阅读完这篇 ...
- java背景颜色代码_java窗口背景颜色设置
窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Color color)方法设置后显示出来的颜色. 如果直接调用这个方法后,的确设置了背景颜色,但看到的却不是直接的JF ...
- java图形界面设置背景_java窗口背景颜色设置
详细内容 窗口背景颜色是指直接调用JFrame或者Frame的setBackground(Color color)方法设置后显示出来的颜色. 如果直接调用这个方法后,的确设置了背景颜色,但看到的却不是 ...
- java printstream 覆盖了_Java PrintStream clearError()方法与示例
PrintStream ClassclearError()方法clearError()方法在java.io包中可用. clearError()方法用于清除此PrintStream的内部错误状态. cl ...
- java中扫描仪程序_Java扫描仪delimiter()方法及示例
扫描仪类delimiter()方法delimiter()方法在java.util包中可用. delimiter()方法用于检索当前与分隔符匹配的Scanner的模式. delimiter()方法是一种 ...
最新文章
- Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入
- 亿级流量架构之分布式事务思路及方法
- 2019年上半年收集到的人工智能机器学习方向干货文章
- C Operator | and can also operate bool operands
- Visual C#使用DirectX实现视频播放
- 多线程生成随机数组+多线程快速排序(C++实现)
- “网红” WebAssembly 与 K8s 如何实现双剑合璧?
- java中对象的生存期_Java中对象的生存周期
- u盘启动pxe安装linux,U盘启动安装centos5.5+centos6.3+PXE网络安装CentOS
- CNN+Transformer=Better,国科大华为鹏城实验室提出Conformer,84.1% Top-1准确率
- Struts中 s checkboxlist 的用法
- CMMI证书有效期是多久?到期后自己可以办理吗
- 流行前端几大UI框架排行榜
- CATIA二次开发—API梳理
- 智慧时代正向我们走来(一)
- 计算机语言中的计数器是什么,程序计数器的作用_程序计数器pc中存放的是什么...
- 【MATLAB-app】appdesigner 灰色区域 代码 如何修改?
- 十大超极本:联想U系列上榜
- 通过模板匹配先定位检测的对象再检测圆形零件和孔针02
- jquery 下拉列表框 改变 动态 改变相应值
热门文章
- 淘宝店铺应用android源码
- R语言使用plot函数可视化数据散点图,使用cex.sub参数自定义设置次标题的字体大小(subtitle)
- c语言正则表达式查找字符串长度,c语言实现正则表达式匹配
- python 长整型_Python整型运算之布尔型、标准整型、长整型操作示例
- php下用redis解决秒杀超卖问题
- ISE中chipscope的使用教程
- python学习 字符串函数
- php根据周 星期实现课表,【php智能课表】选取某个日期段的周几,获取周几对应的日期...
- 2021通信安全员考试及(安全员)模拟考试单选题答案解析
- linux (centos7) 如何破解UltraEdit