Mit*_*ehn 5 java datetime jodatime java-13
我想创建一个每周一次的时间表。
因为从一个星期到下一个星期的时间表是一样的,所以我需要存储的唯一信息是一周中的哪一天,以及它发生的时间。例如。Monday 2:30pm. 实际日期并不重要,时区也不重要。
到目前为止,我一直在编写我的代码,将日期和时间分开,使用DayOfWeek枚举和LocalTime类型来处理时间。但是我开始遇到使用两个变量来管理时间而不是像 DateTime 这样的单一方便类型来管理时间的问题。例如。如果我想在星期二晚上 11 点之后 3 小时获得时间,我可以使用该LocalTime.plus()方法获得凌晨 2 点,但这并没有考虑当天的滚动,我必须单独检查和更新。
我还想确保从周末到开始我有任何解决方案:例如。周日晚上 10 点之后的 5 小时应该是周一凌晨 3 点。
JDK 中是否存在这样的类,或者定义您自己的时间类型是否足够容易?或者使用java提供的LocalDateTime解决一些问题会更好,并以某种方式忽略日期组件?
JDK内部没有这样的内置类,但是自己创建这样的类应该不会太难。
我认为您在使用LocalTimeand 方面处于良好的轨道上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);
}
Run Code Online (Sandbox Code Playgroud)
或者,您也可以包装 aLocalDateTime并隐藏日期组件。这将使您免于执行这些计算。但是,请确保您equals正确实现了例如该方法。
| 归档时间: |
|
| 查看次数: |
249 次 |
| 最近记录: |