如果我有 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)
其中一种方法是使用以下逻辑
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);