统计按天,周,,月,年,自定义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     }

 

转载于:https://www.cnblogs.com/xjatj/p/9449669.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值