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.传入一个指定天(Date类型yyyy-MM-dd),该天已知在工作开始和结束日期之间 5.计算第四步这天设备工作了多少分钟 单位(分钟)
时间: 2024-02-05 15:12:34 浏览: 25
以下是Java代码实现:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DeviceWorkTime {
/**
* 计算指定日期在设备工作时段内的工作时间(分钟)
* @param workTimeStr 设备工作时段字符串,格式为String(HH:mm-HH:mm;HH:mm-HH:mm;HH:mm-HH:mm)
* @param workStartTime 设备工作开始日期时间(Date类型yyyy-MM-dd hh:mm:ss)
* @param workEndTime 设备工作结束日期时间(Date类型yyyy-MM-dd hh:mm:ss)
* @param specifiedDate 指定日期(Date类型yyyy-MM-dd)
* @return 工作时间(分钟)
*/
public static int calculateWorkTime(String workTimeStr, Date workStartTime, Date workEndTime, Date specifiedDate) {
int workTime = 0;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String specifiedDateStr = new SimpleDateFormat("yyyy-MM-dd").format(specifiedDate);
String[] workTimeArray = workTimeStr.split(";");
for (String time : workTimeArray) {
String[] timeArray = time.split("-");
Date start = null;
Date end = null;
try {
start = sdf.parse(timeArray[0]);
end = sdf.parse(timeArray[1]);
} catch (ParseException e) {
e.printStackTrace();
}
if (start != null && end != null) {
Date workStart = new Date();
workStart.setTime(specifiedDate.getTime() + start.getTime());
Date workEnd = new Date();
workEnd.setTime(specifiedDate.getTime() + end.getTime());
if (workStart.before(workEndTime) && workEnd.after(workStartTime)) {
if (workStart.before(workStartTime)) {
workStart = workStartTime;
}
if (workEnd.after(workEndTime)) {
workEnd = workEndTime;
}
workTime += (int) (workEnd.getTime() - workStart.getTime()) / (1000 * 60);
}
}
}
return workTime;
}
}
```
使用示例:
```java
public static void main(String[] args) throws ParseException {
String workTimeStr = "09:00-12:00;13:00-18:00";
Date workStartTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2022-01-01 09:00:00");
Date workEndTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse("2022-01-01 18:00:00");
Date specifiedDate = new SimpleDateFormat("yyyy-MM-dd").parse("2022-01-01");
int workTime = DeviceWorkTime.calculateWorkTime(workTimeStr, workStartTime, workEndTime, specifiedDate);
System.out.println("工作时间:" + workTime + "分钟");
}
```