获取当前时间的所在季度开始结束日期
/*** 计算某日期所在季度开始日期* 季度划分:1、2、3, 4、5、6, 7、8、9, 10、11、12*/public static Date getSeasonEndDate (Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);int month = calendar.get(Calendar.MONTH);calendar.set(Calendar.MONTH, (month + 3) / 3 * 3);calendar.set(Calendar.DATE, 1);return new Date(calendar.getTime().getTime() - 24 * 60 * 60 *1000);}/*** 计算某日期所在季度结束日期* 季度划分:1、2、3, 4、5、6, 7、8、9, 10、11、12*/public static Date getSeasonStartDate (Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);int month = calendar.get(Calendar.MONTH);calendar.set(Calendar.MONTH, month / 3 * 3);calendar.set(Calendar.DATE, 1);return calendar.getTime();}
获取当前日期上一季度开始结束日期时间
/*** 获取当前日期上一季度 开始时间** @return*/public static Date getStartQuarter(Date date) {Calendar startCalendar = Calendar.getInstance();startCalendar.setTime(date);startCalendar.set(Calendar.MONTH, ((int) startCalendar.get(Calendar.MONTH) / 3 - 1) * 3);startCalendar.set(Calendar.DAY_OF_MONTH, 1);setMinTime(startCalendar);return startCalendar.getTime();}/*** 获取当前日期上一季度 结束时间*当前日期为31号存在bug已修复* @return*/public static Date getLastQuarter(Date date) {Calendar endCalendar = Calendar.getInstance();endCalendar.setTime(date);int month = endCalendar.get(Calendar.MONTH);endCalendar.set(Calendar.MONTH, (month/ 3 - 1) * 3 + 3);endCalendar.set(Calendar.DATE, 1);return new Date(endCalendar.getTime().getTime() - 24 * 60 * 60 *1000);}/*** 最小时间** @param calendar*/private static void setMinTime(Calendar calendar) {calendar.set(Calendar.HOUR_OF_DAY, 0);calendar.set(Calendar.MINUTE, 0);calendar.set(Calendar.SECOND, 0);calendar.set(Calendar.MILLISECOND, 0);}/*** 最大时间** @param calendar*/private static void setMaxTime(Calendar calendar) {calendar.set(Calendar.HOUR_OF_DAY, calendar.getActualMaximum(Calendar.HOUR_OF_DAY));calendar.set(Calendar.MINUTE, calendar.getActualMaximum(Calendar.MINUTE));calendar.set(Calendar.SECOND, calendar.getActualMaximum(Calendar.SECOND));calendar.set(Calendar.MILLISECOND, calendar.getActualMaximum(Calendar.MILLISECOND));}/***验证**/@Testpublic void test3(){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");try {System.out.println("当前日期 :-12-31");System.out.println(" 获取当前日期上一季度 结束时间"+sdf.format(getLastQuarter(sdf.parse("-12-31"))));System.out.println(" 获取当前日期上一季度 开始时间"+sdf.format(getStartQuarter(sdf.parse("-12-31"))));System.out.println(" 获取当前日期所在季度 开始时间"+sdf.format(getSeasonStartDate(sdf.parse("-12-31"))));System.out.println(" 获取当前日期所在季度 结束时间"+sdf.format(getSeasonEndDate(sdf.parse("-12-31"))));} catch (ParseException e) {e.printStackTrace();}}
结果
之前有存在31号bug情况,现在修复啦,感谢各位大佬指教~