我目前正在一个应用程序域中做一些工作,该域使用大于 24:00 的时间值来表示午夜之后仍与前一天的详细信息相关的时间。例如,它可能使用星期一的 25:15 来表示星期二的凌晨 1:15,因为从域的角度来看,该值仍然与星期一的数据相关联。
维基百科文章中简要提到了这种类型的时间使用24小时制:
24:00 以后的时间表示法(例如 24:01 或 25:00,而不是 00:01 或 01:00)并不常用,也不包含在相关标准中。然而,它们偶尔会在[各国]的一些特殊情况下使用,这些情况下工作时间会延长到午夜之后,例如广播电视的制作和调度。
Java 提供了LocalTime代表时间的模型类。然而,LocalTime
限制为给定日期的午夜(含)和第二天的午夜(不含)之间,即在范围内[0:00-23:59:59.999999999]
.
Java Time API 的编写非常灵活,但核心 API 中排除了更多专门的概念。正如在三十额外由 Java 8 日期和时间库的主要作者策划的项目:
并非所有日期/时间逻辑都适合 JDK。有些概念太专业或太庞大而无法融入其中。
我没有运气找到现有类型或其他简单的方法来通过核心 Java 库或三十额外。然而,我很可能遗漏了一些东西,也许是一些相当明显的东西。
我如何在 Java 中模拟这种不受约束的时间,最好使用java.time
API 或其扩展(ThreeTen-Extra 项目)?我希望能够使用它以文本方式表示时间值(“25:15”),并理想地用它执行时间计算(例如,将“Monday @ 25:15”转换为“Tuesday @ 1:15 AM”)。
如果没有直接的方法,我可能最终会在 Threeten-Extra 项目中提出一个问题。
我的第一个想法是将其存储为Duration目的。您可以轻松地使用该类上的 getter 来构造HH:mm
当您想要显示值时使用字符串,或者使用 Apache Commons 之类的东西持续时间格式实用程序.
The LocalDate
and LocalDateTime
类支持添加和减去持续时间等操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)