java积累----Calendar----获取上月的起始时间和上月结束时间
来源:互联网 发布:腾讯域名购买流程 编辑:程序博客网 时间:2024/06/05 00:34
我们在进行数据统计的时候,一个常用的场景是需要统计上月的数据,上月的数据获取需要拿到上月的第一天和最后一天。
实现代码如下:
public static void main(String[] args) {Calendar c=Calendar.getInstance();c.add(Calendar.MONTH, -1);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String gtimelast = sdf.format(c.getTime()); //上月System.out.println(gtimelast);int lastMonthMaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);System.out.println(lastMonthMaxDay);c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), lastMonthMaxDay, 23, 59, 59);//按格式输出String gtime = sdf.format(c.getTime()); //上月最后一天System.out.println(gtime);SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-01 00:00:00");String gtime2 = sdf2.format(c.getTime()); //上月第一天System.out.println(gtime2);}
当前时间是 2017-07-31时,输出结果如下:
这里需要注意
① Calendar除了getActualMaximum方法之外,还有一个看起来类似的方法getMaximum,但是这两个方法是不同的:
getActualMaximum 返回实际的最大数值,getMaximum 返回的是可能的最大数值。
上面的代码如果改成getMaximum,那么一般情况都会恒定的返回31 (月份中可能的最大天数是31)
也就是说如果使用getMaximum,当前时间是2017-07-31时,推算出上个月的时间为2017-06-31,因为6月没有31号,所以会出错,导致上月最大时间变成2017-07-01。
② Calendar 的月份取值范围是 0 - 11 , 0代表1月 11代表12月份
(这是因为Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们操作月份的时候会根据需要做 +1 或 -1 的处理)
阅读全文
0 0
- java积累----Calendar----获取上月的起始时间和上月结束时间
- java Calendar 日期获取工具类,昨日开始时间,昨日结束时间,当前周周一日期,当前时间上月第一天,获取当前年第一天
- Java写的获取日期工具类(今天、昨天、本周、上周、本月、上月、本年及特定时间的开始时间和结束时间)
- Java获取当天的起始时间和结束时间
- Java获取当日的起始时间和结束时间
- Java获取当天的起始时间和结束时间
- mysql获取当天,昨天,本周,本月,上周,上月的起始时间
- php上月下月时间获取
- Java获取当前月的起始和结束时间
- golang获取上月的开始日期和结束日期
- 获取上周上季度上月等时间
- Shell获取时间,日期,上月,当月,下月
- PHP获得本周、本月、上周、上月起始时间戳
- 获取这个指定日期的上月的月初和月末时间
- iOS开发中获取上月的起止时间(NSCalendar、NSDateComponents和NSDate的使用)
- oracle,mysql 上年、上月和上周时间
- java获取当天起始与结束时间
- oracle 取当前时间的上月的月末时间
- React学习资源汇总
- js 的一些简单方法
- 安卓-橡皮擦擦线完整实现
- 技术文章|如何更好地使用容器技术实现不可变基础设施
- Visual Studio2013常用快捷键
- java积累----Calendar----获取上月的起始时间和上月结束时间
- 数学建模:MATLAB R2016b下载与安装教程
- iOS经典讲解之百度地图的使用及案例(iOS地图SDK)
- vue.js基础-构造器
- 大型网站架构
- JavaScript中break和continue的区别
- 编辑距离及其算法详解
- Codeforces Round #427 (Div. 2) A
- Docker基本命令