public static void main(String[] args) {
//设置开始时间
LocalTime start = LocalTime.of(9, 0);
// 设置结束时间
LocalTime end = LocalTime.of(11, 0);
// 获取所有间隔一个小时的时间及其开始和结束时间
List<String[]> intervals = getIntervals(start, end);
for (String[] interval : intervals) {
// 输出每个间隔一个小时的开始时间及结束时间
System.out.println(interval[0] + " - " + interval[1]);
}
}
public static List<String[]> getIntervals(LocalTime start, LocalTime end) {
// 创建一个容器用于储存所有的时间间隔及其开始和结束时间
List<String[]> intervals = new ArrayList<>();
// 定义时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
// 循环直到开始时间等于或晚于结束时间
while (start.isBefore(end)) {
// 创建一个数组用于储存当前时间间隔的开始时间和结束时间
String[] interval = new String[2];
// 将当前时间作为该时间间隔的开始时间
interval[0] = start.format(formatter);
// 当前时间增加一个小时并减去一分钟
start = start.plusHours(1).minusMinutes(1);
// 增加后的当前时间作为该时间间隔的结束时间
interval[1] = start.format(formatter);
// 将当前时间间隔的开始时间和结束时间加入到列表中
intervals.add(interval);
}
return intervals;
}
/**
* 计算开始结束时间内,指定执行次数的所有开始、结束时间
* @param startTime
* @param endTime
* @param frequency
* @return {@link List< String[]>}
**/
public static List<String[]> getIntervals(String startTime, String endTime,int frequency) {
//设置开始时间
LocalTime start = LocalTime.of(Integer.parseInt(startTime), 0);
// 设置结束时间
LocalTime end = LocalTime.of(Integer.parseInt(endTime),0);
// 创建一个容器用于储存所有的时间间隔及其开始和结束时间
List<String[]> intervals = new ArrayList<>();
// 定义时间格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm");
// 计算结束、开始时间间隔
long intervalNumber = Duration.between(start, end).toHours()+1;
// 定义时间间隔,默认间隔一小时
long intervalMillis = 60 ;
// 执行次数等于1直接返回开始、结束时间
if(frequency==1){
// 创建一个数组用于储存当前时间间隔的开始时间和结束时间
String[] interval = new String[2];
// 将当前时间作为该时间间隔的开始时间
interval[0] = start.format(formatter);
// 间隔的结束时间
interval[1] = end.plusHours(1).minusMinutes(1).format(formatter);
intervals.add(interval);
return intervals;
}else if (frequency==(intervalNumber*2)){
// 执行次数等于最大值,间隔时间为半小时一次
intervalMillis = 30;
}
// 循环直到开始时间等于或晚于结束时间
while (start.isBefore(end.plusHours(1))) {
// 创建一个数组用于储存当前时间间隔的开始时间和结束时间
String[] interval = new String[2];
// 将当前时间作为该时间间隔的开始时间
interval[0] = start.format(formatter);
// 当前时间增加预定义间隔(半小时或一小时)并减去一分钟
start = start.plusMinutes(intervalMillis);
// 增加后的当前时间作为该时间间隔的结束时间
interval[1] = start.minusMinutes(1).format(formatter);
intervals.add(interval);
}
return intervals;
}