优化掉LocalDateTime
时间: 2023-07-05 13:28:23 浏览: 99
好的,我们可以使用Duration和Period类来计算时间差和日期差,避免使用LocalDateTime类。具体实现可以参考以下代码:
```java
LocalTime startTime1 = LocalTime.of(8, 0); // 第一个时间区间开始时间
LocalTime endTime1 = LocalTime.of(18, 0); // 第一个时间区间结束时间
LocalTime startTime2 = LocalTime.of(18, 0); // 第二个时间区间开始时间
LocalTime endTime2 = LocalTime.of(8, 0); // 第二个时间区间结束时间
LocalTime inputStartTime = LocalTime.parse("13:30"); // 输入的时间段开始时间
LocalTime inputEndTime = LocalTime.parse("19:00"); // 输入的时间段结束时间
// 判断是否跨夜
Duration duration = Duration.between(inputStartTime, inputEndTime);
if (duration.isNegative()) {
inputEndTime = inputEndTime.plus(Period.ofDays(1));
}
// 判断属于哪个时间区间
if (inputStartTime.compareTo(startTime1) >= 0 && inputEndTime.compareTo(endTime1) <= 0) {
System.out.println("属于第一个时间区间");
} else if (inputStartTime.compareTo(startTime2) >= 0 || inputEndTime.compareTo(endTime2) <= 0) {
System.out.println("属于第二个时间区间");
} else {
System.out.println("不属于任何时间区间");
}
```
在判断时间跨夜时,可以使用Duration类的between方法计算时间差,如果时间差是负数,则说明跨夜了,需要把结束时间加上一天的时间差。在判断属于哪个时间区间时,依然可以使用LocalTime的compareTo方法来比较时间的先后顺序,根据不同的比较结果来判断属于哪个时间区间。
阅读全文