08:00-08:23;09:15-10:00;13:00-15:00 java 1.传入一个工作时段字符串(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm) 2.传入一个时间(HH:mm) 3.判断这个时间是否在工作时段时间内 如果在 返回true 如果不在请返回这个时间接下来的工作时段开始时间 如 08:00-08:23;09:15-10:00;13:00-15:00 11:00不在范围内 返回13:00 10:00在范围内
时间: 2023-08-02 09:10:37 浏览: 45
我可以帮你编写一个Java程序来实现你的需求。
代码如下:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class WorkTimeChecker {
private static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
/**
* 判断给定时间是否在工作时段内
*
* @param workTimeStr 工作时段字符串,格式为HH:mm-HH:mm;HH:mm-HH:mm;...
* @param timeStr 给定时间字符串,格式为HH:mm
* @return 如果在工作时段内返回true,否则返回下一个工作时段开始时间
*/
public static String isWorkTime(String workTimeStr, String timeStr) {
String[] workTimes = workTimeStr.split(";");
for (String workTime : workTimes) {
String[] timeRange = workTime.split("-");
String startTimeStr = timeRange[0];
String endTimeStr = timeRange[1];
try {
Date time = sdf.parse(timeStr);
Date startTime = sdf.parse(startTimeStr);
Date endTime = sdf.parse(endTimeStr);
if (time.compareTo(startTime) >= 0 && time.compareTo(endTime) <= 0) {
return "true";
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return nextStartTime(workTimes, timeStr);
}
/**
* 获取下一个工作时段开始时间
*
* @param workTimes 工作时段数组
* @param timeStr 给定时间字符串,格式为HH:mm
* @return 下一个工作时段开始时间字符串,格式为HH:mm
*/
private static String nextStartTime(String[] workTimes, String timeStr) {
Date time;
try {
time = sdf.parse(timeStr);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
for (String workTime : workTimes) {
String[] timeRange = workTime.split("-");
String startTimeStr = timeRange[0];
try {
Date startTime = sdf.parse(startTimeStr);
if (time.compareTo(startTime) < 0) {
return startTimeStr;
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return "";
}
public static void main(String[] args) {
String workTimeStr = "08:00-08:23;09:15-10:00;13:00-15:00";
String timeStr1 = "11:00";
String timeStr2 = "10:00";
String result1 = isWorkTime(workTimeStr, timeStr1);
String result2 = isWorkTime(workTimeStr, timeStr2);
System.out.println(timeStr1 + "在工作时段内:" + result1);
System.out.println(timeStr2 + "在工作时段内:" + result2);
}
}
```
你可以将上述代码复制到一个Java文件中,然后编译运行,就可以测试它的功能了。