datetime - 试图找到一种方法来计算与 java8 重叠的 Jodatime 时刻
问题描述
我目前正在考虑从 JodaTime 迁移到 java8 api。
大多数都可以,但有一件事让我无法理解。我需要计算一个人在“办公时间”内轮班工作的时间。
使用 JodaTime,我利用 Instant 类来执行计算并取得了巨大的成功:
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;
但是,由于 java8 中似乎缺少 Interval 类,所以我对如何最好地将这个逻辑移动到 java8 api 有点茫然。
我当然可以继续使用 Jodatime,但由于它已停产,我想尝试完全删除它。
非常感谢指针。
解决方案
Joda-classInterval
还没有被 Java-8 取代。我主要看到三种方式:
a)编写您自己的间隔类(但是查看源代码会有所帮助)
b) 使用我的 lib Time4J和类MomentInterval与方法findIntersection(...)产生一个可选的交集间隔。存在到 Java-8 类的转换方法,如moment.toTemporalAccessor()
yielding java.time.Instant
。
c) 使用具有相同名称Interval的类的 lib Threeten-Extra及其方法intersection(...)。在这里,您必须首先检查交叉点是否存在,否则将引发异常。
推荐阅读
- typescript - typeofimport(".json") 缺少可观察类型 <> 中的以下内容
- android - 我想创建一个关于我的宗教的圣书应用程序,但是有大量文本的问题
- angular - Angular 6 - 无法使用主题订阅消息
- javascript - 如何在jquery中隐藏除第一类之外的每个类的所有div
- python - 如何将变量从终端导入到 shell?
- azure - 使用 azure 服务总线,如何将单个消息发布到多个队列?
- python - SQLAlchemy 核心 engine.execute() 与 connection.execute()
- sql - 列 SQL 的多数投票
- unity3d - UnityWebRequest.downloadHandler.text 为空,即使 POST 方法返回响应
- java - ExifInterface 无法在模拟器上检索所拍照片的地理标签