我想创建一个每周一次的时间表。
因为从一个星期到下一个星期的时间表是一样的,所以我需要存储的唯一信息是一周中的哪一天,以及它发生的时间。例如。 Monday 2:30pm
.实际日期并不重要,时区也不重要。
到目前为止,我一直在使用 DayOfWeek
将日期和时间分开编写代码。枚举和 LocalTime
键入以处理时间。但是我开始遇到使用两个变量来管理时间的问题,而不仅仅是像 DateTime 这样的一个方便的类型。例如。如果我想在周二晚上 11 点之后 3 小时获得时间,我可以使用 LocalTime.plus()
获得凌晨 2 点的方法,但这并没有考虑当天的翻转,我必须单独检查和更新。
我还想确保从周末到开始我有任何解决方案:例如。周日晚上 10 点之后的 5 小时应该是周一凌晨 3 点。
JDK 中是否存在这样的类,或者定义您自己的时间类型是否足够容易?或者使用java提供的LocalDateTime解决一些问题会更好,并以某种方式忽略日期组件?
最佳答案
JDK内部没有这样的内置类,但是自己创建这样的类应该不会太难。
我认为您在使用 LocalTime
方面进展顺利和 DayOfWeek
.确保编写一个包装这两个组件的类,然后添加方法以将时间单位添加到包装对象。
其中一种方法可能如下所示:
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
方法正确。
关于java - 是否有用于在 Java 中编码本地时间的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61440567/