fengxiang
2018-08-29 aa9eeecfa949d2cb7d1fb72f19693b2975be803f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
package com.moral.common.util;
 
import com.moral.entity.charts.TimePeriod;
import com.moral.entity.charts.TimeUnits;
 
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
 
public class ReportTimeFormat {
       // 保持mysql format格式和java里format格式一致
       public final  static String YEAR_FORMAT = "yyyy";
       public final  static String MONTH_FORMAT = "yyyy-MM";
       public final  static String DAY_FORMAT = "yyyy-MM-dd";
       public final  static String HOUR_FORMAT = "yyyy-MM-dd/HH";
       public final  static String MINUTE_FORMAT = "yyyy-MM-dd/HH:mm";
       public final  static String YEAR_FORMAT_OF_MYSQL = "%Y";
       public final  static String MONTH_FORMAT_OF_MYSQL = "%Y-%m";
       public final  static String DAY_FORMAT_OF_MYSQL = "%Y-%m-%d";
       public final  static String HOUR_FORMAT_OF_MYSQL = "%Y-%m-%d/%H";
       public final  static String MINUTE_FORMAT_OF_MYSQL = "%Y-%m-%d/%H:%i";
       public static String toMySqlTimeFormat(TimeUnits timeUnits){
           switch (timeUnits){
               case YEAR: return YEAR_FORMAT_OF_MYSQL;
               case MONTH: return MONTH_FORMAT_OF_MYSQL;
               case DAY: return DAY_FORMAT_OF_MYSQL;
               case HOUR: return HOUR_FORMAT_OF_MYSQL;
               case MINUTE:return MINUTE_FORMAT_OF_MYSQL;
           }
           return "%Y-%m-%d%H:%i:%s";
       }
       public static String toMySqlActualTimeFormat(TimeUnits timeUnits){
           switch (timeUnits){
               case YEAR: return "%Y";
               case MONTH: return "%m";
               case DAY: return "%d";
               case HOUR: return "%H";
               case MINUTE:return "%i";
           }
           return "%s";
       }
 
    /**
     * 获取 时间区间数组 从小到大
     * @param timePeriod
     * @return
     */
       public static List<String> makeTimeList(TimePeriod timePeriod){
           Calendar start = Calendar.getInstance();
           start.setTime(timePeriod.getStartTime());
           Calendar end = Calendar.getInstance();
           end.setTime(timePeriod.getEndTime());
           List<String> timeList = new ArrayList<>();
           String formatStyle = "";
           int timeUnit = 0;
           switch (timePeriod.getTimeUnits()){
               case YEAR: formatStyle = YEAR_FORMAT;
                   timeUnit = Calendar.YEAR;break;
               case MONTH: formatStyle =MONTH_FORMAT;
                   timeUnit = Calendar.MONTH;break;
               case DAY: formatStyle =DAY_FORMAT;
                   timeUnit = Calendar.DAY_OF_YEAR;break;
               case HOUR: formatStyle =HOUR_FORMAT;
                   timeUnit = Calendar.HOUR;break;
               case MINUTE: formatStyle =MINUTE_FORMAT;
                   timeUnit = Calendar.MINUTE;break;
           }
           do{
               String time = dateToString(start.getTime(),formatStyle);
               timeList.add(time);
               start.add(timeUnit,1);
           }
           while (start.getTimeInMillis()<=end.getTimeInMillis());
           return timeList;
       }
 
    /**
     * 时间计算方法
     * @param date 待计算方法
     * @param timeUnits 处理单位,年,月,日,时,分
     * @param amount 差值,负数为减,正数为加
     * @return
     */
     public static Date dateCalc(Date date,TimeUnits timeUnits,Integer amount) {
         Calendar rightNow = Calendar.getInstance();
         rightNow.setTime(date);
         rightNow.add(toCalendarTimeUnit(timeUnits), amount);
         return rightNow.getTime();
     }
 
    /**
     * 获取格式化后的时间
     * @param format
     * @return
     * @throws ParseException
     */
     public  static  Date getFormatDate(String format){
         Date date = null;
         try {
             SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
             String dateString = simpleDateFormat.format(new Date());
             date = simpleDateFormat.parse(dateString);
         } catch (Exception ex) {
             ex.printStackTrace();
         }
         return date;
     }
    /**
     * 设置时间
     * @param date
     * @param timeUnits
     * @param value
     * @return
     */
     public static Date dateSetValue(Date date,TimeUnits timeUnits,Integer value) {
         Calendar cal = Calendar.getInstance();
         cal.setTime(date);
         cal.set(toCalendarTimeUnit(timeUnits), value);
         return cal.getTime();
     }
     private static int toCalendarTimeUnit(TimeUnits timeUnits) {
           switch (timeUnits) {
               case YEAR: return  Calendar.YEAR;
               case MONTH: return  Calendar.MONTH;
               case DAY: return  Calendar.DAY_OF_YEAR;
               case HOUR: return  Calendar.HOUR;
               case MINUTE: return  Calendar.MINUTE;
               case SECOND: return  Calendar.SECOND;
               default: return  Calendar.MILLISECOND;
           }
     }
     /**"yyyy-MM-dd hh:mm:ss"
     * 把指定的date类型时间转换为指定格式的字符串
     * @param date
     * @return
     */
    private static String dateToString(Date date,String formatStyle) {
        SimpleDateFormat format = new SimpleDateFormat(formatStyle);
        String dateFormat = format.format(date);
        return dateFormat;
    }
 
}