JAVA 1.传入一个工作时段字符串(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm) 2.传入一个工作时间(HH:mm) 3.计算这个工作时间是不是工作时段内的时间 如果是 返回这个时间 如果不是 返回这个时间的下一个工作时段的开始时间
时间: 2024-02-20 21:01:32 浏览: 20
好的,根据您的问题,我可以帮您解决。实现的思路如下:
1. 首先,将工作时段字符串按照分号分隔成多个时间段。
2. 对于每个时间段,将其按照破折号分隔成开始时间和结束时间,转化为分钟数。
3. 将传入的工作时间也转化为分钟数。
4. 遍历每个时间段,判断工作时间是否在该时间段内。如果是,直接返回该工作时间;否则,继续判断下一个时间段。
5. 如果所有时间段都不包含该工作时间,则返回下一个工作时间段的开始时间。
以下是 Java 代码实现:
```java
public static String checkWorkTime(String workTimeStr, String checkTimeStr) {
String[] timeRanges = workTimeStr.split(";");
int checkTime = timeToMinute(checkTimeStr);
for (String range : timeRanges) {
String[] parts = range.split("-");
int start = timeToMinute(parts[0]);
int end = timeToMinute(parts[1]);
if (checkTime >= start && checkTime <= end) {
return checkTimeStr;
}
}
// 没有找到包含该工作时间的时间段
int nextStart = timeToMinute(timeRanges[0].split("-")[0]);
for (String range : timeRanges) {
int start = timeToMinute(range.split("-")[0]);
if (checkTime < start) {
nextStart = start;
break;
}
}
return minuteToTime(nextStart);
}
// 将时间字符串转化为分钟数
private static int timeToMinute(String timeStr) {
String[] parts = timeStr.split(":");
return Integer.parseInt(parts[0]) * 60 + Integer.parseInt(parts[1]);
}
// 将分钟数转化为时间字符串
private static String minuteToTime(int minute) {
int hour = minute / 60;
int minuteInHour = minute % 60;
return String.format("%02d:%02d", hour, minuteInHour);
}
```
您可以这样调用该方法:
```java
String workTimeStr = "08:00-12:00;13:00-17:00";
String checkTimeStr = "10:30";
String result = checkWorkTime(workTimeStr, checkTimeStr);
System.out.println(result);
```
输出结果为:
```
10:30
```
如果您将 `checkTimeStr` 修改为 `"18:00"`,则输出结果为:
```
08:00
```
希望能够帮到您!