输入一个星期数list和指定时间,如果当前时间大于指定时间就返回list的下一个星期数的时间。
package org.jeecg.modules.exhibit.util;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.List;
public class NextExecutionTimeUtil {
public static LocalDateTime getNextExecutionTime(List<Integer> weekdays, LocalDateTime currentTime) {
if (currentTime.isAfter(LocalDateTime.now())) {
return currentTime;
}
LocalDateTime nextExecutionTime = currentTime.plusDays(1);
while (!weekdays.contains(nextExecutionTime.getDayOfWeek().getValue())) {
nextExecutionTime = nextExecutionTime.plusDays(1);
}
return nextExecutionTime;
}
public static void main(String[] args) {
List<Integer> weekdays = new ArrayList<>();
weekdays.add(1);
weekdays.add(2);
// weekdays.add(3);
// weekdays.add(4);
// weekdays.add(5);
// weekdays.add(6);
// weekdays.add(7);
LocalDate currentDate = LocalDate.now();
LocalTime currentTime = LocalTime.parse("11:08:40");
LocalDateTime localDateTime = LocalDateTime.of(currentDate, currentTime);
LocalDateTime nextExecutionTime = getNextExecutionTime(weekdays, localDateTime);
System.out.println("下一次执行时间: " + nextExecutionTime);
}
}