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;
|
}
|
|
}
|