LocalDate和Date的区别:
Java中Date与LocalDate、LocalDateTime之间的区别及相互转换_localdate 和 date 区别-CSDN博客
应用:
获取n天前的时间数组
/**
* 根据time 获取time天内时间list
*
* @param time 时间跨度 14-半个月 返回15条
* @return
*/
public List<LocalDate> getDateRange(Integer time) {
//当前日期2024-04-06
LocalDate currentDate = LocalDate.now();
//当前日期2024-03-23,获取time天前日期
LocalDate pastDate = currentDate.minusDays(time);
//日期list 从3-23到4-6
List<LocalDate> dateRange = new ArrayList<>();
LocalDate tempDate = pastDate;
while (!tempDate.isAfter(currentDate)) {
dateRange.add(tempDate);
tempDate = tempDate.plusDays(1);
}
return dateRange;
}
检查给定日期是否在指定的日期范围内(包含date转localdate)
/**
* 检查给定的日期是否在指定的日期范围内
*
* @param date 创建时间类型是Date
* @param dateRange n天内的时间list
* @return
*/
private boolean isWithinDateRange(Date date, List<LocalDate> dateRange) {
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
return dateRange.contains(localDate);
}
判断表单中时间字段是否在时间范围内
/**
* 获取范围内的表单列表
*
* @param dateRange
* @return
*/
private List<BillDetail> getFilteredBillDetails(List<LocalDate> dateRange) {
return billDetailService.selectBillDetailList(null)//搜索出所有的表单信息
.stream()//转为流
.filter(billDetail -> isWithinDateRange(billDetail.getCreateTime(), dateRange))//筛选
.collect(Collectors.toList());//转为list返回
}
时间格式的转换
想要获得04-06的时间格式----MM-dd
/**
* 输出的时间格式
*
* @param date
* @return
*/
private String formatDate(LocalDate date) {
return date.format(DateTimeFormatter.ofPattern("MM-dd"));
}