public static final String START_TIME = "startTime";
public static final String END_TIME = "endTime";
/**
* 根据指定日期按指定秒数切割时间
*
* @param localDate 日期
* @param second 间隔多少秒
* @return
*/
public static List<Map<String, LocalDateTime>> splitDateBySecond(LocalDate localDate, long second) {
LocalDateTime min = LocalDateTime.of(localDate, LocalTime.MIN);
LocalDateTime max = LocalDateTime.of(localDate, LocalTime.MAX);
List<Map<String, LocalDateTime>> list = new ArrayList<>();
while (true) {
LocalDateTime end = min.plusSeconds(second);
Map<String, LocalDateTime> map = new HashMap<>(2);
map.put(START_TIME, min);
map.put(END_TIME, end);
list.add(map);
long until = end.until(max, ChronoUnit.SECONDS);
if (until <= second) {
map = new HashMap<>(2);
map.put(START_TIME, end);
map.put(END_TIME, max);
list.add(map);
break;
}
min = end;
}
return list;
}
测试
public static void main(String[] args) {
List<Map<String, LocalDateTime>> list = splitDateBySecond(LocalDate.now(), 3600L);
for (int i = 0; i < list.size(); i++) {
Map<String, LocalDateTime> map = list.get(i);
LocalDateTime min = map.get(START_TIME);
if (i != 0) {
min = min.plusSeconds(1L);
}
map.put(START_TIME, min);
}
//[{startTime=2020-07-29T00:00, endTime=2020-07-29T01:00}, {startTime=2020-07-29T01:00:01, endTime=2020-07-29T02:00}, {startTime=2020-07-29T02:00:01, endTime=2020-07-29T03:00}, {startTime=2020-07-29T03:00:01, endTime=2020-07-29T04:00}, {startTime=2020-07-29T04:00:01, endTime=2020-07-29T05:00}, {startTime=2020-07-29T05:00:01, endTime=2020-07-29T06:00}, {startTime=2020-07-29T06:00:01, endTime=2020-07-29T07:00}, {startTime=2020-07-29T07:00:01, endTime=2020-07-29T08:00}, {startTime=2020-07-29T08:00:01, endTime=2020-07-29T09:00}, {startTime=2020-07-29T09:00:01, endTime=2020-07-29T10:00}, {startTime=2020-07-29T10:00:01, endTime=2020-07-29T11:00}, {startTime=2020-07-29T11:00:01, endTime=2020-07-29T12:00}, {startTime=2020-07-29T12:00:01, endTime=2020-07-29T13:00}, {startTime=2020-07-29T13:00:01, endTime=2020-07-29T14:00}, {startTime=2020-07-29T14:00:01, endTime=2020-07-29T15:00}, {startTime=2020-07-29T15:00:01, endTime=2020-07-29T16:00}, {startTime=2020-07-29T16:00:01, endTime=2020-07-29T17:00}, {startTime=2020-07-29T17:00:01, endTime=2020-07-29T18:00}, {startTime=2020-07-29T18:00:01, endTime=2020-07-29T19:00}, {startTime=2020-07-29T19:00:01, endTime=2020-07-29T20:00}, {startTime=2020-07-29T20:00:01, endTime=2020-07-29T21:00}, {startTime=2020-07-29T21:00:01, endTime=2020-07-29T22:00}, {startTime=2020-07-29T22:00:01, endTime=2020-07-29T23:00}, {startTime=2020-07-29T23:00:01, endTime=2020-07-29T23:59:59.999999999}]
System.out.println(list);
}