如何在java中按日期分割时间范围

问题描述 投票:0回答:1

如果我有 StartTime 和 EndTime (可能是毫秒或 java.time.Instant 等)。 我想将范围拆分为不同的列表日。

例如:如果输入开始时间(01-Jan-2022 7.00)和结束时间(05-Jan-2022 10:00) 那么输出应该有List of

StartTime(01-Jan-2022 07.00) and EndTime(01-Jan-2022 23.59)
StartTime(02-Jan-2022 00.00) and EndTime(02-Jan-2022 23.59)
StartTime(03-Jan-2022 00.00) and EndTime(03-Jan-2022 23.59)
StartTime(04-Jan-2022 00.00) and EndTime(04-Jan-2022 23.59)
StartTime(05-Jan-2022 00.00) and EndTime(05-Jan-2022 10:00)

Ex : 如果输入 StartTime (01-Jan-2022 7.00) 和 EndTime(01-Jan-2022 10:00) 然后输出应该有 List should have one one item

StartTime(01-Jan-2022 07.00) and EndTime(01-Jan-2022 10:00)

time java-8 duration instant
1个回答
0
投票

其中一种方法是使用以下逻辑

        while (startInstant.truncatedTo(ChronoUnit.DAYS).isBefore(endInstant.truncatedTo(ChronoUnit.DAYS))) {

        Instant startDayInstant = startInstant.truncatedTo(ChronoUnit.DAYS);
        Instant nextDayInstant = startDayInstant.plus(1, ChronoUnit.DAYS);
        timeRanges.add(new TimeRange(startDayInstant, startInstant, nextDayInstant.minusMillis(1)));
        startInstant = nextDayInstant;

    }
    timeRanges.add(new TimeRange(startInstant.truncatedTo(ChronoUnit.DAYS),
                    startInstant, endInstant));
    System.out.println(timeRanges);
© www.soinside.com 2019 - 2024. All rights reserved.