package com.jingluu.admin.modules.elasticsearch.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* @Author: eros
* @Description:
* @Date: Created in 2020/4/15 9:43
* @Version: 1.0
* @Modified By:
*/
public class DateTimeUtils {
public static final SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat date_sdf = new SimpleDateFormat("yyyy-MM-dd");
/**
* 当前日历,这里用中国时间表示
*
* @return 以当地时区表示的系统当前日历
*/
public static Calendar getCalendar() {
return Calendar.getInstance();
}
/**
* 系统时间的秒数
*
* @return 系统时间的秒数
*/
public static long getSeconds() {
return Instant.now().getEpochSecond();
}
/**
* 指定毫秒数表示日期的默认显示,具体格式:年-月-日
*
* @param millis 指定的毫秒数
* @return 指定毫秒数表示日期按“年-月-日“格式显示
*/
public static String formatDate(long millis) {
return date_sdf.format(new Date(millis));
}
/**
* @Description: 获取两个时间段 之间的所有日期,具体格式:年-月-日
* @Author: eros
* @Date: 2020/4/15 10:32
* @param startDateStr 开始时间 年-月-日 时:分:秒
* @param endDateStr 结束时间 年-月-日 时:分:秒
* @Return: java.util.List<java.lang.String>
* @Exception:
*/
public static List<String> getDateList(String startDateStr, String endDateStr) throws ParseException {
List<String> result = new ArrayList<>();
// 将 str时间转为 Date 类型
Date startDate = datetimeFormat.parse(startDateStr);
Date endDate = datetimeFormat.parse(endDateStr);
// 这里主要借助于Calendar 对于两个时间的比较,来存储
Calendar startCal = getCalendar();
startCal.setTime(startDate);
Calendar endCal = getCalendar();
endCal.setTime(endDate);
do {
result.add(formatDate(startCal.getTimeInMillis()));
startCal.add(Calendar.DAY_OF_YEAR, 1);
} while (startCal.before(endCal));
// 因为精细度到 日期,所有最后一个日期难以处理,需要单独来做
String end = formatDate(endCal.getTimeInMillis());
if(!result.contains(end)) {
result.add(end);
}
return result;
}
}