java 给定3个参数 分别为 1.工作时间段(可以有三个时间段或无数个时间段) 2.时间 3.分钟数 计算分钟后的时间 只考虑工作时段
时间: 2023-12-14 16:35:38 浏览: 64
以下是一个Java方法,可以计算给定工作时间段内指定时间加上指定分钟数后的时间:
```java
public static LocalTime calculateWorkingTime(LocalTime[] workingHours, LocalTime time, int minutesToAdd) {
// 将工作时间段按开始时间排序
Arrays.sort(workingHours);
for (int i = 0; i < workingHours.length; i++) {
LocalTime start = workingHours[i];
LocalTime end = i < workingHours.length - 1 ? workingHours[i + 1] : null;
if (end == null || time.isBefore(end)) {
// 在当前时间段内
LocalTime result = time.plusMinutes(minutesToAdd);
if (result.isAfter(start) && (end == null || result.isBefore(end))) {
// 加上分钟数后仍在当前时间段内
return result;
} else {
// 加上分钟数后跨越了时间段,继续往后找下一个时间段
time = end;
i++;
}
}
}
// 没有找到对应时间段,返回null或抛出异常
return null;
}
```
其中,`workingHours`是一个`LocalTime`类型的数组,表示工作时间段。`time`是要计算的基准时间,`minutesToAdd`是要加上的分钟数。该方法会依次遍历工作时间段,找到包含`time`的时间段,并计算加上`minutesToAdd`后的时间。如果加上分钟数后跨越了时间段,会继续往后找下一个时间段,直到找到合适的时间段或者遍历完所有时间段。
以下是一个示例代码:
```java
LocalTime[] workingHours = { LocalTime.of(9, 0), LocalTime.of(12, 0), LocalTime.of(13, 0), LocalTime.of(18, 0) };
LocalTime time = LocalTime.of(10, 30);
int minutesToAdd = 90;
LocalTime result = calculateWorkingTime(workingHours, time, minutesToAdd);
System.out.println(result); // 输出: 12:00
```
在上面的示例中,工作时间段为`9:00-12:00`和`13:00-18:00`,要计算的时间为`10:30`,要加上的分钟数为`90`,计算得到的结果为`12:00`。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)