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) 5.计算设备工作时间其中一天设备工作了多少分钟 单位(分钟)
时间: 2024-02-05 10:12:39 浏览: 30
java 各种时间的处理,格式化,字符串的各种处理方法,字符集的各种类型转换等!
3星 · 编辑精心推荐
可以使用Java中的SimpleDateFormat类解析日期时间字符串,然后计算设备工作时间。具体实现如下:
```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DeviceWorkTimeCalculator {
public static int calculateWorkingMinutes(String workTimeStr, Date startTime, Date endTime) {
int workingMinutes = 0;
String[] workTimeRanges = workTimeStr.split(";");
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
for (String workTimeRange : workTimeRanges) {
String[] startEndTimes = workTimeRange.split("-");
try {
Date workStartTime = dateFormat.parse(startEndTimes[0]);
Date workEndTime = dateFormat.parse(startEndTimes[1]);
if (workEndTime.before(workStartTime)) { // 跨天的情况
workEndTime.setTime(workEndTime.getTime() + 24 * 60 * 60 * 1000);
}
Date intersectionStartTime = new Date(Math.max(workStartTime.getTime(), startTime.getTime()));
Date intersectionEndTime = new Date(Math.min(workEndTime.getTime(), endTime.getTime()));
if (intersectionEndTime.after(intersectionStartTime)) { // 有交集
workingMinutes += (int) ((intersectionEndTime.getTime() - intersectionStartTime.getTime()) / (60 * 1000));
}
} catch (ParseException e) {
e.printStackTrace();
}
}
return workingMinutes;
}
public static void main(String[] args) throws ParseException {
String workTimeStr = "09:00-12:00;13:00-18:00";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startTime = dateFormat.parse("2022-01-01 08:30:00");
Date endTime = dateFormat.parse("2022-01-01 18:30:00");
int workingMinutes = calculateWorkingMinutes(workTimeStr, startTime, endTime);
System.out.println("设备工作了 " + workingMinutes + " 分钟");
}
}
```
在上面的代码中,首先使用分号分割工作时段字符串,然后依次处理每个工作时间范围。对于每个工作时间范围,使用":"分割起始时间和结束时间,然后使用SimpleDateFormat解析成Date对象。如果结束时间早于起始时间,说明跨天了,需要将结束时间加上一天的毫秒数。接着计算工作时间范围与所给出的时间范围的交集,并累加工作时长。最后返回总的工作时长。
阅读全文