统计按天,周,,月,年,自定义Calendar的时间控制
1 /** 2 * 给定日期类型(年月周天)和日期计算出开始和结束的时间 3 * 4 * @param startDate 5 * @param endDate 6 * @param dateType 7 * @return 8 */ 9 public Map<String, Date> valiteDate(String startDate, String endDate, String dateType) { 10 Calendar c = Calendar.getInstance(); 11 SimpleDateFormat sdf; 12 Date startTime = new Date(); 13 Date endTime = new Date(); 14 int year; 15 int month; 16 switch (dateType) { 17 case RmpReportConstant.LEVEL_YEAR: 18 sdf = new SimpleDateFormat("yyyy"); 19 try { 20 startTime = sdf.parse(startDate); 21 c.setTime(startTime); 22 year = c.get(Calendar.YEAR); 23 c.set(year, 0, 01, 00, 00, 00); 24 startTime = c.getTime(); 25 c.set(year, 11, 31, 23, 59, 59); 26 endTime = c.getTime(); 27 } catch (ParseException e) { 28 e.printStackTrace(); 29 } 30 break; 31 case RmpReportConstant.LEVEL_MONTH: 32 sdf = new SimpleDateFormat("yyyy-MM"); 33 try { 34 startTime = sdf.parse(startDate); 35 c.setTime(startTime); 36 year = c.get(Calendar.YEAR); 37 month = c.get(Calendar.MONTH); 38 int dayMonthEnd = c.getActualMaximum(Calendar.DAY_OF_MONTH); 39 c.set(year, month, 01, 00, 00, 00); 40 startTime = c.getTime(); 41 c.set(year, month, dayMonthEnd, 23, 59, 59); 42 endTime = c.getTime(); 43 } catch (ParseException e) { 44 e.printStackTrace(); 45 } 46 break; 47 case RmpReportConstant.LEVEL_WEEK: 48 String startDates = RmpDateTimeUtil.getFirstDayOfWeek(startDate); 49 String endDates = RmpDateTimeUtil.getLastDayOfWeek(startDate); 50 sdf = new SimpleDateFormat("yyyy-MM-dd"); 51 try { 52 startTime = sdf.parse(startDates); 53 endTime = sdf.parse(endDates); 54 } catch (ParseException e) { 55 e.printStackTrace(); 56 } 57 break; 58 case RmpReportConstant.LEVEL_DAY: 59 sdf = new SimpleDateFormat("yyyy-MM-dd"); 60 try { 61 Date dayDate = sdf.parse(startDate); 62 c.setTime(dayDate); 63 c.set(Calendar.HOUR, 0); 64 c.set(Calendar.MINUTE, 0); 65 c.set(Calendar.SECOND, 0); 66 c.set(Calendar.MILLISECOND, 0); 67 startTime = c.getTime(); 68 c.set(Calendar.HOUR, 23); 69 c.set(Calendar.MINUTE, 59); 70 c.set(Calendar.SECOND, 59); 71 c.set(Calendar.MILLISECOND, 999); 72 endTime = c.getTime(); 73 } catch (ParseException e) { 74 e.printStackTrace(); 75 } 76 77 break; 78 case RmpReportConstant.LEVEL_CUSTOM: 79 sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 80 try { 81 startTime = sdf.parse(startDate + " 00:00:00"); 82 endTime = sdf.parse(endDate + " 23:59:59"); 83 } catch (ParseException e) { 84 e.printStackTrace(); 85 } 86 break; 87 default: 88 break; 89 } 90 Map<String, Date> resultMap = new TreeMap<>(); 91 resultMap.put("startTime", startTime); 92 resultMap.put("endTime", endTime); 93 return resultMap; 94 }
1 /** 2 * 获取当前时间所属周的第一天 3 * @author yuchuanjun 2016年12月14日 下午7:41:17 4 * @param date 5 * @return 6 */ 7 public static String getFirstDayOfWeek(String date) { 8 try{ 9 SimpleDateFormat format = new SimpleDateFormat(DATA_FORMAT_yyyy_MM_dd); 10 Calendar cal = Calendar.getInstance(); 11 cal.setTime(format.parse(date)); 12 int day = cal.get(Calendar.DAY_OF_WEEK); 13 // 当周第一天是星期天 Calendar周日是每周的第一天 14 if (day == 1) { 15 day = 7; 16 } else { 17 day--; 18 } 19 // 周一 20 cal.add(Calendar.DAY_OF_MONTH, -(day - 1)); 21 return format.format(cal.getTime()); 22 }catch(Exception e){ 23 e.printStackTrace(); 24 } 25 return null; 26 } 27 /** 28 * 获取当前时间所属周的最后一天 29 * @author yuchuanjun 2016年12月14日 下午7:45:34 30 * @param date 31 * @return 32 */ 33 public static String getLastDayOfWeek(String date) { 34 try{ 35 SimpleDateFormat format = new SimpleDateFormat(DATA_FORMAT_yyyy_MM_dd); 36 Calendar cal = Calendar.getInstance(); 37 cal.setTime(format.parse(date)); 38 int day = cal.get(Calendar.DAY_OF_WEEK); 39 // 当周第一天是星期天 Calendar周日是每周的第一天 40 if (day == 1) { 41 day = 7; 42 } else { 43 day--; 44 } 45 // 周日 46 cal.add(Calendar.DAY_OF_MONTH, 7 - day); 47 return format.format(cal.getTime()); 48 }catch(Exception e){ 49 e.printStackTrace(); 50 } 51 return null; 52 }
1 protected Collection<Date> getDateList( Date startDate,Date endDate,String dateType) { 2 Collection<Date> dateSet = new ArrayList<Date>(); 3 if(endDate!=null){ 4 Calendar calendar = Calendar.getInstance(); 5 while(startDate.compareTo(endDate) <= 0) { 6 calendar.setTime(startDate); 7 dateSet.add(startDate); 8 if("day".equals(dateType)){ 9 addCalendarDay(calendar); 10 }else if("year".equals(dateType)){ 11 addCalendarYear(calendar); 12 }else { 13 addCalendar(calendar); 14 } 15 startDate = calendar.getTime(); 16 } 17 }else{ 18 dateSet.add(startDate); 19 } 20 return dateSet; 21 }
1 protected List<String> convertDateToStringSimple(Collection<Date> dateList, boolean isConvertToday,String dateType) { 2 List<String> dateStrList = new ArrayList<String>(); 3 if(!RmpUtils.isEmpty(dateList)){ 4 for(Date date : dateList){ 5 if("day".equals(dateType)){ 6 dateStrList.add(convertDateToStringSimpleDay(date, isConvertToday)); 7 }else if("year".equals(dateType)){ 8 dateStrList.add(convertDateToStringSimpleYear(date, isConvertToday)); 9 }else{ 10 dateStrList.add(convertDateToStringSimple(date, isConvertToday)); 11 } 12 } 13 } 14 return dateStrList; 15 }