java将时间段分割为天
package com.service.impl;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: Yang JianXiong
* @since: 2023/12/12
*/
@Getter
@AllArgsConstructor
public class OneDay {
private static final String MAX_BY_SECOND = "23:59:59";
/**
* 起点
*/
final private LocalDateTime min;
/**
* 正午
*/
final private LocalDateTime noon;
/**
* 终点
*/
final private LocalDateTime max;
public static List<OneDay> divideToDay(final LocalDateTime startTime, final LocalDateTime endTime) {
if (startTime.isAfter(endTime)) {
throw new RuntimeException("开始时间必须早于结束时间");
}
final LocalDate startDate = startTime.toLocalDate();
final LocalDate endDate = endTime.toLocalDate();
final long delta = endDate.toEpochDay() - startDate.toEpochDay();
final List<OneDay> oneDayList = new ArrayList<>();
for (long i = 0L; i < delta + 1; i++) {
final LocalDate tempDate = startDate.plusDays(i);
oneDayList.add(new OneDay(tempDate.atTime(LocalTime.MIN), tempDate.atTime(LocalTime.NOON), tempDate.atTime(LocalTime.parse(MAX_BY_SECOND))));
}
return oneDayList;
}
}
学习使我充实,分享给我快乐!