给定一个时间段,如何将这个时间段按照星期、月、季度、半年以及年进行划分。
如:2020-12-18 ~ 2020-12-27这个时间段,按照星期可以分为:[2020-12-18,2020-12-20], [2020-12-21,2020-12-27]。
具体代码实现如下:
public class DateUtil {
//将时间段按星期分割
public static final List splitToWeeks(Date start, Date end) {
List result = new ArrayList<>();
result.add(Range.create(start));
Date from = new Date(start.getTime() + 7L * 24 * 3600 * 1000);
Date weekEnd = cn.hutool.core.date.DateUtil.endOfWeek(end);
while (from.compareTo(weekEnd) <= 0) {
Date dt = cn.hutool.core.date.DateUtil.beginOfWeek(from);
CollectionUtil.last(result).end(new Date(dt.getTime() - 24L * 3600 * 1000));
result.add(Range.create(dt));
from.setTime(from.getTime() + 7L * 24 * 3600 * 1000);
}
CollectionUtil.last(result).end(end);