【问题标题】:How to split the time range by date in java如何在java中按日期拆分时间范围
【发布时间】:2022-01-18 08:44:23
【问题描述】:

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

Ex : 如果输入 StartTime (01-Jan-2022 7.00) 和 EndTime(05-Jan-2022 10:00) 那么输出应该有列表

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 应该有一个项目

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

【问题讨论】:

    标签: time java-8 duration instant


    【解决方案1】:

    一种方法是使用下面的逻辑

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

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 1970-01-01
      • 2019-04-17
      • 2011-07-28
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      • 1970-01-01
      相关资源
      最近更新 更多