plusDays 无法使用
时间: 2023-12-05 10:05:22 浏览: 71
java8 LocalDate 使用详解
5星 · 资源好评率100%
如果您无法使用`plusDays`方法,可以使用`LocalDateTime`类代替`LocalTime`类,以下是相应的代码:
```java
import java.time.LocalDateTime;
import java.time.LocalTime;
public class TimeRange {
public static void main(String[] args) {
// 两个连续区间
LocalTime start1 = LocalTime.parse("06:00");
LocalTime end1 = LocalTime.parse("12:00");
LocalTime start2 = LocalTime.parse("12:00");
LocalTime end2 = LocalTime.parse("06:00");
// 传入时间段
LocalDateTime startTime = LocalDateTime.parse("2022-02-01T22:30:00");
LocalDateTime endTime = LocalDateTime.parse("2022-02-02T04:45:00");
// 判断在哪个区间
if (isBetween(startTime, start1, end1) && isBetween(endTime, start1, end1)) {
System.out.println("时间段在第一个区间");
} else if (isBetween(startTime, start2, end2) && isBetween(endTime, start2, end2)) {
System.out.println("时间段在第二个区间");
} else {
System.out.println("时间段不在任何一个区间");
}
}
// 判断时间t是否在[start, end]区间内
private static boolean isBetween(LocalDateTime t, LocalTime start, LocalTime end) {
LocalDateTime startDateTime = LocalDateTime.of(t.toLocalDate(), start);
LocalDateTime endDateTime = LocalDateTime.of(t.toLocalDate(), end);
if (end.isBefore(start)) {
endDateTime = endDateTime.plusDays(1);
}
return !t.isBefore(startDateTime) && !t.isAfter(endDateTime);
}
}
```
这里使用`LocalDateTime`类代替`LocalTime`类传递时间段,同时在`isBetween`方法中进行了相应的修改,以便正确判断跨夜情况。
如果您仍然无法使用`plusDays`方法,也可以手动进行时间的加减操作,例如:
```java
endDateTime = endDateTime.withHour(end.getHour())
.withMinute(end.getMinute())
.withSecond(end.getSecond())
.plusDays(1);
```
这里将`LocalDateTime`对象的小时、分钟、秒数设置为`end`的小时、分钟、秒数,并手动加上一天。
阅读全文