JAVA 1.传入工作时段字符串,格式为String(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm), 2.传入工作开始日期时间(Date类型yyyy-MM-dd hh:mm:ss) 3.传入工作结束日期时间(Date类型yyyy-MM-dd hh:mm:ss) 4.传入指定日期 4.计算出这天的工作起止时间段 格式(HH:mm-HH:mm;HH:mm-HH:mm) 例如: 工作时间段是08:00-09:00;10:00-11:00 工作起止时间是2023-05-25 08:17:00 至 2023-05-26 09:00:00 指定日期是 2023-05-26 程序应该返回 08:00-09:00
时间: 2024-02-06 07:03:52 浏览: 28
下面是一个可能的实现代码:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.StringTokenizer;
public class WorkSchedule {
public static void main(String[] args) {
String workTime = "08:00-09:00;10:00-11:00";
Date startTime = parseDate("2023-05-25 08:17:00");
Date endTime = parseDate("2023-05-26 09:00:00");
Date specifiedDate = parseDate("2023-05-26");
List<String> result = getWorkTime(workTime, startTime, endTime, specifiedDate);
for (String time : result) {
System.out.println(time);
}
}
private static List<String> getWorkTime(String workTime, Date startTime, Date endTime, Date specifiedDate) {
List<String> result = new ArrayList<>();
StringTokenizer st = new StringTokenizer(workTime, ";");
while (st.hasMoreTokens()) {
String timeRange = st.nextToken();
String[] timeArray = timeRange.split("-");
String startStr = timeArray[0];
String endStr = timeArray[1];
Date startDate = parseTime(specifiedDate, startStr);
Date endDate = parseTime(specifiedDate, endStr);
if (startDate.getTime() >= startTime.getTime() && endDate.getTime() <= endTime.getTime()) {
String timeStr = formatTime(startDate) + "-" + formatTime(endDate);
result.add(timeStr);
}
}
return result;
}
private static Date parseDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return sdf.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
private static Date parseTime(Date date, String timeStr) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
String[] timeArray = timeStr.split(":");
int hour = Integer.parseInt(timeArray[0]);
int minute = Integer.parseInt(timeArray[1]);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, minute);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
private static String formatTime(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
return sdf.format(date);
}
}
```
输出结果为:
```
08:00-09:00
```
这个程序会解析工作时间段字符串,并将每个时间段转换为起始时间和结束时间。然后,对于指定日期,计算出该日期的开始和结束时间。最后,遍历每个时间段,如果该时间段在指定日期内,则将该时间段添加到结果集中。最终,返回所有符合条件的时间段。