package com.moral.common.util; import com.moral.entity.charts.TimePeriod; import com.moral.entity.charts.TimeUnits; 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 makeTimeList(TimePeriod timePeriod){ Calendar start = Calendar.getInstance(); start.setTime(timePeriod.getStartTime()); Calendar end = Calendar.getInstance(); end.setTime(timePeriod.getEndTime()); List 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()