package cn.lili.modules.statistics.util; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; import cn.lili.common.utils.StringUtils; import cn.lili.modules.statistics.entity.dto.StatisticsQueryParam; import cn.lili.modules.statistics.entity.enums.SearchTypeEnum; import java.util.Calendar; import java.util.Date; /** * 统计缓存后缀工具 * * @author Chopper * @since 2021-01-15 15:30 */ public class StatisticsDateUtil { /** * 快捷搜索,得到开始时间和结束时间 * * @param searchTypeEnum * @return */ public static Date[] getDateArray(SearchTypeEnum searchTypeEnum) { Date[] dateArray = new Date[2]; Calendar calendar = Calendar.getInstance(); //时间归到今天凌晨0点 calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); switch (searchTypeEnum) { case TODAY: dateArray[0] = calendar.getTime(); calendar.set(Calendar.HOUR_OF_DAY, +24); calendar.set(Calendar.MILLISECOND, -1); dateArray[1] = calendar.getTime(); break; case YESTERDAY: //获取昨天 calendar.set(Calendar.HOUR_OF_DAY, -24); dateArray[0] = calendar.getTime(); //昨天结束时间 calendar.set(Calendar.HOUR_OF_DAY, +24); calendar.set(Calendar.MILLISECOND, -1); dateArray[1] = calendar.getTime(); break; case LAST_SEVEN: calendar.set(Calendar.HOUR_OF_DAY, -24 * 7); dateArray[0] = calendar.getTime(); calendar.set(Calendar.HOUR_OF_DAY, +24 * 7); calendar.set(Calendar.MILLISECOND, -1); //获取过去七天 dateArray[1] = calendar.getTime(); break; case LAST_THIRTY: //获取最近三十天 calendar.set(Calendar.HOUR_OF_DAY, -24 * 30); dateArray[0] = calendar.getTime(); calendar.set(Calendar.HOUR_OF_DAY, +24 * 30); calendar.set(Calendar.MILLISECOND, -1); //获取过去七天 dateArray[1] = calendar.getTime(); break; default: throw new ServiceException(ResultCode.ERROR); } return dateArray; } /** * 获取年月获取开始结束时间 * * @param year 年 * @param month 月 * @return 返回时间 */ public static Date[] getDateArray(Integer year, Integer month) { Date[] dateArray = new Date[2]; Calendar calendar = Calendar.getInstance(); //时间归到今天凌晨0点 calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); calendar.set(year, month, 1); dateArray[1] = calendar.getTime(); calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); dateArray[0] = calendar.getTime(); return dateArray; } /** * 根据搜索参数获取搜索开始结束时间 * * @param statisticsQueryParam * @return */ public static Date[] getDateArray(StatisticsQueryParam statisticsQueryParam) { //如果快捷搜搜哦 if (StringUtils.isNotEmpty(statisticsQueryParam.getSearchType())) { return getDateArray(SearchTypeEnum.valueOf(statisticsQueryParam.getSearchType())); } //按照年月查询 else if (statisticsQueryParam.getMonth() != null && statisticsQueryParam.getYear() != null) { return getDateArray(statisticsQueryParam.getYear(), statisticsQueryParam.getMonth()); } //默认查询当前月份 else { Calendar calendar = Calendar.getInstance(); return getDateArray(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1); } } /** * 根据一个日期,获取这一天的开始时间和结束时间 * * @param queryDate * @return */ public static Date[] getDateArray(Date queryDate) { Date[] dateArray = new Date[2]; Calendar calendar = Calendar.getInstance(); calendar.setTime(queryDate); //时间归到今天凌晨0点 calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); dateArray[0] = calendar.getTime(); calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); calendar.set(Calendar.SECOND, calendar.get(Calendar.SECOND) - 1); dateArray[1] = calendar.getTime(); return dateArray; } }