项目中有个需求 查询每月的统计数据 考虑存在当月没有数据的情况 需要返回0
但是只根据主表来查询的话 为0 的月份就不返回了
构造月份集合的主要代码
public static List<String> getMonthsBetween(LocalDateTime startTime, LocalDateTime endTime) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM");
List<String> months = new ArrayList<>();
LocalDateTime current = startTime;
while (!current.isAfter(endTime)) {
months.add(current.format(formatter));
current = current.plusMonths(1);
}
// 如果结束时间在当前日期之前,需要添加结束月份
if (current.getMonthValue() > endTime.getMonthValue()) {
months.remove(months.size() - 1); // 移除超出的月份
months.add(endTime.format(formatter)); // 添加结束月份
}
return months;
}