java 计算10分钟后的时间 只计算工作时段内的时间 并且可以有多个工作时段
时间: 2023-07-30 08:05:52 浏览: 48
这个问题可以通过以下步骤来解决:
1. 获取当前时间,计算出10分钟后的时间
2. 获取工作时段的起始时间和结束时间
3. 判断10分钟后的时间是否在工作时段内,如果不在,则将时间调整到下一个工作时段的起始时间
4. 如果有多个工作时段,需要遍历每个工作时段进行判断
下面是一份 Java 代码实现:
```java
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalTime;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 工作时段定义
List<WorkTime> workTimes = new ArrayList<>();
workTimes.add(new WorkTime(DayOfWeek.MONDAY, LocalTime.of(9, 0), LocalTime.of(12, 0)));
workTimes.add(new WorkTime(DayOfWeek.MONDAY, LocalTime.of(13, 0), LocalTime.of(18, 0)));
workTimes.add(new WorkTime(DayOfWeek.TUESDAY, LocalTime.of(9, 0), LocalTime.of(12, 0)));
// 当前时间
LocalTime now = LocalTime.now();
// 10分钟后的时间
LocalTime future = now.plus(Duration.ofMinutes(10));
// 判断是否在工作时段内
boolean isInWorkTime = false;
for (WorkTime workTime : workTimes) {
if (workTime.getDayOfWeek() == future.getDayOfWeek() &&
workTime.getStartTime().compareTo(future) <= 0 &&
workTime.getEndTime().compareTo(future) >= 0) {
isInWorkTime = true;
break;
}
}
// 如果不在工作时段内,调整到下一个工作时段的起始时间
if (!isInWorkTime) {
WorkTime nextWorkTime = getNextWorkTime(future, workTimes);
future = nextWorkTime.getStartTime();
}
System.out.println("现在时间:" + now);
System.out.println("10分钟后时间:" + future);
}
/**
* 获取下一个工作时段的起始时间
*/
private static WorkTime getNextWorkTime(LocalTime time, List<WorkTime> workTimes) {
for (WorkTime workTime : workTimes) {
if (workTime.getDayOfWeek() == time.getDayOfWeek() &&
workTime.getStartTime().compareTo(time) > 0) {
return workTime;
}
}
// 如果今天没有工作时段了,就找下一个工作日的第一个工作时段
for (int i = time.getDayOfWeek().getValue() + 1; i <= 7; i++) {
DayOfWeek dayOfWeek = DayOfWeek.of(i);
for (WorkTime workTime : workTimes) {
if (workTime.getDayOfWeek() == dayOfWeek) {
return workTime;
}
}
}
// 如果下一周都没有工作时段了,就返回 null
return null;
}
/**
* 工作时段类
*/
private static class WorkTime {
private DayOfWeek dayOfWeek;
private LocalTime startTime;
private LocalTime endTime;
public WorkTime(DayOfWeek dayOfWeek, LocalTime startTime, LocalTime endTime) {
this.dayOfWeek = dayOfWeek;
this.startTime = startTime;
this.endTime = endTime;
}
public DayOfWeek getDayOfWeek() {
return dayOfWeek;
}
public LocalTime getStartTime() {
return startTime;
}
public LocalTime getEndTime() {
return endTime;
}
}
}
```
这个实现考虑了多个工作时段和跨天的情况,可以根据需要进行调整。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)