/**
* 获取时间范围
* <p>
* 时间类型 1近七天 2本月 3近四个季度 4本年 5本季度 6本周
*/
private Map<String, Date> getTypeDate(String timeType) {
if (ObjectUtil.isEmpty(timeType)) {
timeType = "1";
}
//时间类型 1近七天 2本月 3近四个季度 4本年 5本季度 6本周
Date beginDate;
Date endDate;
switch (timeType) {
case "2":
beginDate = DateUtil.beginOfMonth(new Date());
endDate = DateUtil.endOfMonth(new Date());
break;
case "3":
Map<String, Object> nearQuarterDate = getNearQuarterDate(new Date());
beginDate = (Date) nearQuarterDate.get("beginTime");
endDate = new Date();
break;
case "4":
beginDate = DateUtil.beginOfYear(new Date());
endDate = DateUtil.endOfYear(new Date());
break;
case "5":
beginDate = DateUtil.beginOfQuarter(new Date());
endDate = DateUtil.endOfQuarter(new Date());
break;
case "6":
beginDate = DateUtil.beginOfWeek(new Date());
endDate = DateUtil.endOfWeek(new Date());
break;
default:
//时间类型 1近七天
beginDate = DateUtil.offsetDay(new Date(), -6);
endDate = new Date();
break;
}
Map<String, Date> map = new HashMap<>();
map.put("beginDate", beginDate);
map.put("endDate", endDate);
return map;
}
/**
* 获取近四个季度开始时间
*
* @param date 指定日期
*/
private Map<String, Object> getNearQuarterDate(Date date) {
Map<String, Object> map = new HashMap<>();
LocalDate localDate = DateUtil.toLocalDateTime(DateUtil.endOfQuarter(date)).toLocalDate();
List<NearQuarterDateVO> list = new ArrayList<>();
for (int i = 0; i < 4; i++) {
//每个季度开始时间
LocalDate startOfQuarter = localDate.with(IsoFields.DAY_OF_QUARTER, 1);
//每个季度结束时间
LocalDate endOfQuarter = localDate.with(IsoFields.DAY_OF_QUARTER, IsoFields.DAY_OF_QUARTER.range().getMaximum());
if (i < 3) {
//后退三个月来移动到下一个季度
localDate = localDate.minusMonths(3);
}
NearQuarterDateVO quarterDate = new NearQuarterDateVO();
quarterDate.setBeginTime(DateUtil.parse(startOfQuarter.toString()));
quarterDate.setEndTime(DateUtil.parse(endOfQuarter.toString()));
//获得指定日期年份和季节 格式:20131
quarterDate.setQuarterDate(DateUtil.yearAndQuarter(DateUtil.parse(startOfQuarter.toString())));
quarterDate.setYearName(startOfQuarter.getYear() + "");
quarterDate.setQuarterName(DateUtil.quarter(DateUtil.parse(startOfQuarter.toString())) + "");
list.add(quarterDate);
}
//前四个季度 开始时间
map.put("beginTime", DateUtil.beginOfQuarter(DateUtil.parse(localDate.toString())));
//年份和季节 格式:20131
map.put("quarterList", list.stream()
.sorted(Comparator.comparing(NearQuarterDateVO::getQuarterDate))
.collect(Collectors.toList())
);
return map;
}
@Data
public class NearQuarterDateVO {
/**
* 季度开始时间
*/
private Date beginTime;
/**
* 季度结束时间
*/
private Date endTime;
/**
* 年份和季节 格式:20131
*/
private String quarterDate;
/**
* 年份
*/
private String yearName;
/**
* 季度
*/
private String quarterName;
}
仅供参考,希望对您有所帮助,感谢阅读。