试图找到一种方法来计算与 java8 重叠的 Jodatime 瞬间

Trying to find a way to calculate Jodatime instants overlap with java8

我目前正在考虑从 JodaTime 迁移到 java8 apis。

大多数都可以,但有一件事让我难以理解。我需要计算 "office hours".

内有多少人轮班

在 JodaTime 中,我使用 Instant class 进行计算并取得了巨大的成功:

DateTime in = new DateTime(inTime);
DateTime out = new DateTime(outTime);

Interval officeHours = new Interval(in.withTime(whstart.getHours(), 
whstart.getMinutes(), 0, 0),
in.withTime(whend.getHours(), whend.getMinutes(), 0, 0));

Interval shift = new Interval(in, out);
Interval overlap = officeHours.overlap(shift);

officeHoursSeconds = overlap != null ?
 overlap.toDuration().getStandardSeconds() : 0;

但是,由于区间 class 似乎从 java8 中消失了,我对如何最好地将此逻辑移动到 java8 api的。

我当然可以继续使用 Jodatime,但由于它已停产,我想尝试完全删除它。

不胜感激。

Joda-classInterval还没有被Java-8超越。我主要看到三种方式:

a) 写下你自己的间隔 class(不过查看源代码会有帮助)

b) 使用我的库 Time4J and the class MomentInterval with the method findIntersection(...) 生成可选的交集间隔。 Java-8-class 的转换方法如 moment.toTemporalAccessor() 产生 java.time.Instant 存在。

c) 使用库 Threeten-Extra which has a class with same name Interval and its method intersection(...)。这里必须先检查交集是否存在,否则会抛出异常。