package com.vxdata.activity.utils;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
public class SplicDateUtil {
/**
* 获取时间段内所有季度
*
* @param startTime 开始时间
* @param endTime 结束时间
*/
public static List<String> getSeasonList(LocalDate startTime, LocalDate endTime) {
// 取当月第一天, 避免startTime的日期大于endTime计算不出来的情况
startTime = LocalDate.of(startTime.getYear(), startTime.getMonthValue(), 1);
endTime = LocalDate.of(endTime.getYear(), endTime.getMonthValue(), 1);
Set<String> set = new HashSet<>();
LocalDate mark = startTime;
while (true) {
if (mark.isBefore(endTime) || mark.isEqual(endTime)) {
String season = String.valueOf(mark.getYear()) + String.valueOf((mark.getMonthValue() + 2) / 3);
set.add(season);
// 加一个月
mark = mark.plusMonths(1);
} else {
break;
}
}
System.out.println(set);
// set中是倒序, 重新排序
return set.stream().sorted().collect(Collectors.toList());
}
public static void main(String[] args) {
LocalDate startTime = LocalDate.of(2021, 1, 10);
LocalDate endTime = LocalDate.of(2022, 4, 1);
List<String> set = getSeasonList(startTime, endTime);
System.out.println(set);
}
}
参考资料: java计算月份所在的季度