| | |
| | | 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.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 "%Y"; |
| | | case MONTH: return "%Y-%m"; |
| | | case DAY: return "%Y-%m-%d"; |
| | | case HOUR: return "%Y-%m-%d/%H"; |
| | | case MINUTE:return "%Y-%m-%d/%H:%i"; |
| | | 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"; |
| | | } |
| | |
| | | } |
| | | return "%s"; |
| | | } |
| | | |
| | | /** |
| | | * 获取 时间区间数组 从小到大 |
| | | * @param timePeriod |
| | | * @return |
| | | */ |
| | | public static List<String> makeTimeList(TimePeriod timePeriod){ |
| | | Calendar start = Calendar.getInstance(); |
| | | start.setTime(timePeriod.getStartTime()); |
| | |
| | | String formatStyle = ""; |
| | | int timeUnit = 0; |
| | | switch (timePeriod.getTimeUnits()){ |
| | | case YEAR: formatStyle ="yyyy"; |
| | | case YEAR: formatStyle = YEAR_FORMAT; |
| | | timeUnit = Calendar.YEAR;break; |
| | | case MONTH: formatStyle ="yyyy-MM"; |
| | | case MONTH: formatStyle =MONTH_FORMAT; |
| | | timeUnit = Calendar.MONTH;break; |
| | | case DAY: formatStyle ="yyyy-MM-dd"; |
| | | case DAY: formatStyle =DAY_FORMAT; |
| | | timeUnit = Calendar.DAY_OF_YEAR;break; |
| | | case HOUR: formatStyle ="yyyy-MM-dd/HH"; |
| | | case HOUR: formatStyle =HOUR_FORMAT; |
| | | timeUnit = Calendar.HOUR;break; |
| | | case MINUTE: formatStyle ="yyyy-MM-dd/HH:mm"; |
| | | case MINUTE: formatStyle =MINUTE_FORMAT; |
| | | timeUnit = Calendar.MINUTE;break; |
| | | } |
| | | do{ |
| | |
| | | timeList.add(time); |
| | | start.add(timeUnit,1); |
| | | } |
| | | while (start.getTimeInMillis()<end.getTimeInMillis()); |
| | | 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 |