gpt4 book ai didi

java - 如何操纵一天中的时间范围

转载 作者:行者123 更新时间:2023-11-30 05:39:28 28 4
gpt4 key购买 nike

我正在使用 Java 处理议程。我已在数据库中存储了一周中的某一天、某些实验室可用的开始和结束时间。

现在我需要通过仅显示一天中不可用的时间来为日程系统提供服务。例如,如果第一天的开始时间为 13:00,结束时间为 19:00,我需要返回一个范围,如下所示:[00:00 - 13:00, 19:00 - 23:59] 。请记住,一天可以有多个可用范围。

是否有任何 Java 类或 API 可以帮助我减去这些范围?

最佳答案

我的库Time4J为减法问题提供以下解决方案:

ClockInterval fullDay = ClockInterval.between(PlainTime.of(0), PlainTime.of(24));
ClockInterval slot = ClockInterval.between(PlainTime.of(13, 0), PlainTime.of(19, 0));

IntervalCollection<PlainTime> icoll = IntervalCollection.onClockAxis().plus(fullDay);
List<ChronoInterval<PlainTime>> result = icoll.minus(slot).getIntervals();

可以轻松迭代得到的半开区间(带开放端)列表,并给出预期结果 {[T00:00/T13:00), [T19:00/T24:00)}。每个结果区间可以是 converted也到标准的ClockInterval。还有多种方法可以本地化地打印此类间隔。此外,您可能会发现类 DayPartitionBuilder 很有趣,它允许连接流中的工作日和时间表,请参阅 documentation 中给出的示例。 .

关于与java.time的兼容性:

  • ClockInterval 的 Between() 方法也接受 java.time.LocalTime 的实例。
  • PlainTime 的每个实例都可以通过 toTemporalAccessor() 方法转换回 LocalTime,但值 24 除外: 00 存在于 Time4J 中,但不存在于 java.time.LocalTime 中。

关于java - 如何操纵一天中的时间范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55958518/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com