【发布时间】:2019-07-01 21:50:23
【问题描述】:
假设如下sn-p:
LocalTime test = LocalTime.of(21, 14);
test.plusHours(5);
结果通常是02:14,但我想求和超过 24 小时限制,所以结果是 26:14。
在这种情况下,我有一个字段,用户可以输入在一项任务上花费了多少时间。但是,我必须按小时(例如 48 小时)而不是天(例如 2 天和 4 小时)工作。
有没有一种方法可以在java.time API 中实现?如果没有,我能做些什么来实现这一目标?我正在使用 Java 8、Spring Boot 和 Hibernate 来映射数据库。
【问题讨论】:
-
您为什么要这样做?听起来像一个XY问题。 (即“你真正想做什么”?)
-
@selbie 我有一个字段,用户可以在其中输入在一项任务上花费了多少时间。该时间可能超过 24 小时。
-
显而易见的解决方案是将用户的输入从他键入的内容标准化为有效的 LocalTime 对象。或将所有内容标准化为分钟。 (例如,如果用户键入“26:14”作为时间,您将其规范化为
26*60+14分钟并存储它。另一个转换函数可以从绝对分钟回到显示时间。 -
为什么不是 java.time.LocalDateTime?
-
LocalTime表示时间值。26:14不是时间值,而是经过时间值。就像普通手表和秒表之间的区别一样。Duration是用于跟踪经过时间值的类。
标签: java date time duration hour