JAVA 1.传入工作时间段字符串 格式为HH:mm-HH:mm;HH:mm-HH:mm;... 2.传入空闲时间段字符串 格式为HH:mm-HH:mm;HH:mm-HH:mmHH:mm-HH:mm; 3.判断空闲时间段最后的结束时间是不是工作时间最后的结束时间 如果是 则继续往前看上一个结束之间是不是对应工作时间的结束时间 如果是 则继续查上一个 直到查到不是的 返回这个空闲时段的开始时间
时间: 2024-02-23 20:58:37 浏览: 119
好的,针对您的问题,我可以提供以下 JAVA 代码实现:
```java
import java.time.LocalTime;
public class TimeChecker {
public static void main(String[] args) {
String workTime = "09:00-12:00;13:00-18:00"; // 工作时间段
String freeTime = "08:00-09:30;12:30-13:30;16:00-18:30"; // 空闲时间段
String lastEndTime = getLastEndTime(workTime, freeTime); // 获取最后空闲时间段的开始时间
if (lastEndTime != null) {
System.out.println("最后空闲时间段的开始时间:" + lastEndTime);
} else {
System.out.println("不存在符合条件的空闲时间段");
}
}
/**
* 获取最后空闲时间段的开始时间
* @param workTime 工作时间段字符串
* @param freeTime 空闲时间段字符串
* @return 最后空闲时间段的开始时间,如果不存在返回 null
*/
public static String getLastEndTime(String workTime, String freeTime) {
// 将时间段字符串解析为 LocalTime 数组
LocalTime[][] workTimeArr = parseTimeStr(workTime);
LocalTime[][] freeTimeArr = parseTimeStr(freeTime);
// 倒序遍历空闲时间段数组
for (int i = freeTimeArr.length - 1; i >= 0; i--) {
LocalTime[] free = freeTimeArr[i];
// 判断空闲时间段的结束时间是否是工作时间的结束时间
if (free[1].equals(workTimeArr[workTimeArr.length - 1][1])) {
// 空闲时间段的结束时间与工作时间的结束时间相同
int j = workTimeArr.length - 1;
while (j >= 0) {
if (workTimeArr[j][1].equals(free[0])) {
// 空闲时间段的开始时间与工作时间的结束时间相同
return free[0].toString();
}
j--;
}
}
}
return null;
}
/**
* 将时间段字符串解析为 LocalTime 数组
* @param timeStr 时间段字符串
* @return LocalTime 数组,每个元素包含开始时间和结束时间
*/
private static LocalTime[][] parseTimeStr(String timeStr) {
String[] timeArr = timeStr.split(";");
LocalTime[][] result = new LocalTime[timeArr.length][2];
for (int i = 0; i < timeArr.length; i++) {
String[] time = timeArr[i].split("-");
result[i][0] = LocalTime.parse(time[0]);
result[i][1] = LocalTime.parse(time[1]);
}
return result;
}
}
```
代码中 `getLastEndTime` 方法用于获取最后空闲时间段的开始时间,接收两个参数,分别是工作时间段字符串和空闲时间段字符串。方法的返回值为最后空闲时间段的开始时间,如果不存在则返回 null。在 `main` 方法中,我给出了一个示例,您可以根据自己的需求修改工作时间段和空闲时间段字符串,然后运行代码进行测试。
希望能够帮到您!如果还有其他问题,请随时提出。
阅读全文