Joda Time LocalTime 24:00结束

时间:2023-09-17 16:18
我们正在创建一个调度应用程序,我们需要在白天代表某人的可用时间表,无论他们在哪个时区。从Joda Time的Interval中获取一个提示,它表示两个实例之间的绝对时间间隔(开始包含,结束独家),我们创建了一个LocalInterval。 LocalInterval由两个LocalTimes组成(开始包含,最终排他),我们甚至为Hibernate中的持久化做了一个方便的类。 例如,如果有人从下午1:00到下午5:00可用,我们将创建:
new LocalInterval(new LocalTime(13, 0), new LocalTime(17, 0));
到目前为止一直很好 - 直到有人想在某天从晚上11点到午夜才有空。由于间隔结束是独占的,因此应该很容易表示:
new LocalInterval(new LocalTime(23, 0), new LocalTime(24, 0));
确认!不行。这会抛出异常,因为LocalTime不能保持大于23的任何小时。 这对我来说似乎是一个设计缺陷--- Joda没有考虑到有人可能想要一个代表非包容性端点的LocalTime。 这真是令人沮丧,因为它在我们创造的非常优雅的模型中打了一个洞。 我有什么选择 - 除了分支Joda并在24小时内取出支票? (不,我不喜欢使用虚拟值的选项---比如23:59:59 ---代表24:00。) 更新:对于那些一直说不存在24:00的人,这里引用ISO 8601-2004 4.2.3注释2,3:“一个日历日[24:00]的结束与[00]重合:00]在下一个日历日的开始......“和”表示[hh]具有值[24]的表示仅优选表示时间间隔的结束....“     

Copyright© 黑海资讯

鄂ICP备2023014923号