java实现这样一个功能,一条记录它有一个开始时间字段比如2023-6-10, 有一个结束时间字段比如2023-6-12,,还有一个时间段字段是个数组比如[9:00-11:00,17:00-19:00] 通过时间段字段将这个记录分成开始时间到结束时间内的这个时间段若干条记录 例如:2023-6-10 9:00-11:00、2023-6-10 17:00-19:00、2023-6-11 9:00-11:00、2023-6-11 17:00-19:00、2023-6-12 9:00-11:00、2023-6-12 17:00-19:00
时间: 2024-03-12 15:48:12 浏览: 54
可以通过Java中的日期时间类来实现这个功能。具体步骤如下:
1.将开始时间和结束时间转换为LocalDate类型。
2.遍历时间段数组,将每个时间段转换为开始时间和结束时间的LocalTime类型。
3.通过开始时间和结束时间的LocalDate类型以及时间段的LocalTime类型,生成新的记录并存储在List中。
示例代码如下:
```
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
public class RecordSplitter {
public static void main(String[] args) {
String startTimeStr = "2023-6-10";
String endTimeStr = "2023-6-12";
String[] timeIntervals = {"9:00-11:00", "17:00-19:00"};
LocalDate startDate = LocalDate.parse(startTimeStr, DateTimeFormatter.ofPattern("yyyy-M-d"));
LocalDate endDate = LocalDate.parse(endTimeStr, DateTimeFormatter.ofPattern("yyyy-M-d"));
List<Record> records = new ArrayList<>();
for (LocalDate date = startDate; date.isBefore(endDate.plusDays(1)); date = date.plusDays(1)) {
for (String timeInterval : timeIntervals) {
String[] timeStrs = timeInterval.split("-");
LocalTime startTime = LocalTime.parse(timeStrs[0], DateTimeFormatter.ofPattern("H:mm"));
LocalTime endTime = LocalTime.parse(timeStrs[1], DateTimeFormatter.ofPattern("H:mm"));
LocalDateTime startDateTime = LocalDateTime.of(date, startTime);
LocalDateTime endDateTime = LocalDateTime.of(date, endTime);
records.add(new Record(startDateTime, endDateTime));
}
}
// 打印生成的记录
for (Record record : records) {
System.out.println(record);
}
}
static class Record {
LocalDateTime startTime;
LocalDateTime endTime;
public Record(LocalDateTime startTime, LocalDateTime endTime) {
this.startTime = startTime;
this.endTime = endTime;
}
@Override
public String toString() {
return startTime.format(DateTimeFormatter.ofPattern("yyyy-M-d H:mm")) + " - " + endTime.format(DateTimeFormatter.ofPattern("H:mm"));
}
}
}
```
输出结果如下:
```
2023-6-10 9:00 - 11:00
2023-6-10 17:00 - 19:00
2023-6-11 9:00 - 11:00
2023-6-11 17:00 - 19:00
2023-6-12 9:00 - 11:00
2023-6-12 17:00 - 19:00
```
阅读全文