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;
    }

}

posted @ 2024-01-19 17:47  JaxYoun  阅读(106)  评论(0编辑  收藏  举报