试图找到一种方法来计算与 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(...)。这里必须先检查交集是否存在,否则会抛出异常。
我目前正在考虑从 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(...)。这里必须先检查交集是否存在,否则会抛出异常。