测试下来不正确,13:00和19:00明明在区间内
时间: 2024-03-02 16:52:54 浏览: 80
集合与函数的概念测试题及答案
非常抱歉,我的代码有误。在判断是否跨夜时,应该比较日期而不是时间,因为时间差可能为负数但是日期差一定为正数。同时,在计算跨夜时间时需要使用Duration的plusDays方法,而不是Period的ofDays方法。以下是修改后的代码:
```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); // 第二个时间区间结束时间
LocalDateTime inputStartDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.parse("13:30")); // 输入的时间段开始时间
LocalDateTime inputEndDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.parse("19:00")); // 输入的时间段结束时间
// 判断是否跨夜
if (inputEndDateTime.toLocalTime().isBefore(inputStartDateTime.toLocalTime())) {
inputEndDateTime = inputEndDateTime.plusDays(1);
}
// 判断属于哪个时间区间
if (inputStartDateTime.toLocalTime().compareTo(startTime1) >= 0 && inputEndDateTime.toLocalTime().compareTo(endTime1) <= 0) {
System.out.println("属于第一个时间区间");
} else if (inputStartDateTime.toLocalTime().compareTo(startTime2) >= 0 || inputEndDateTime.toLocalTime().compareTo(endTime2) <= 0) {
System.out.println("属于第二个时间区间");
} else {
System.out.println("不属于任何时间区间");
}
```
在判断是否跨夜时,使用LocalDateTime的toLocalTime方法将日期时间转换为LocalTime类型,然后比较开始时间和结束时间的先后顺序。如果结束时间早于开始时间,则说明跨夜了,需要把结束时间加上一天的时间差。在判断属于哪个时间区间时,和之前的做法一样,使用LocalTime的compareTo方法来比较时间的先后顺序,根据不同的比较结果来判断属于哪个时间区间。
阅读全文