我想制定一个一周一周的时间表。
因为每周的时间表都是相同的,所以我需要存储的唯一信息是星期几及其发生的时间。例如。Monday 2:30pm
。实际日期并不重要,时区也不重要。
到目前为止,我一直在编写将日期和时间分开的代码,使用DayOfWeek
枚举和LocalTime
键入以配合时间。但我开始遇到使用两个变量来管理时间而不是像 DateTime 这样的单一方便类型的问题。例如。如果我想获得周二晚上 11 点后 3 小时的时间,我可以使用LocalTime.plus()
获取凌晨 2 点的方法,但这并没有考虑到当天的滚动,我必须单独检查和更新它。
我还想确保我所拥有的任何解决方案都能从周末到开始:例如。周日晚上 10 点后 5 小时应该是周一凌晨 3 点。
JDK 中是否存在这样的类,或者是否很容易定义自己的时间类型?或者使用 java 提供的 LocalDateTime 来解决问题,并以某种方式忽略日期组件会更好吗?
JDK中没有这样的内置类,但是自己创建这样的类应该不会太难。
我认为你在使用方面走得很好LocalTime
and DayOfWeek
。确保编写一个包装这两个组件的类,然后添加方法以将时间单位添加到包装对象。
方法之一could看起来像这样:
public WeekDayTime plusHours(int hours) {
int plusDays = (hours / 24);
int plusHours = hours % 24;
if (this.time.getHours() + plusHours >= 24) {
plusDays++;
plusHours -= 24;
}
DayOfWeek newDayOfWeek = ...; // Calculate the day of week somehow
LocalTime newTime = this.time.plusHours(plusHours);
return new WeekDayTime(newDayOfWeek, newTime);
}
或者,您也可以包装一个LocalDateTime
并隐藏日期部分。这将使您免于执行这些计算。但随后请确保您实施了例如equals
方法正确。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)