JAVA在指定时间段内执行

97 阅读1分钟
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

public class Test {
    
    private static final String START_TIME = "20:00";
    
    private static final String END_TIME = "6:00";
    
    public static void main(String[] args) {
        if(isExecuteTime(START_TIME,END_TIME)){
            System.out.println("执行任务逻辑");
        }else {
            System.out.println("非执行时间");
        }
    }

    /**
     * 判断当前时间是否在时间段内
     * @param start 开始时间
     * @param end   结束时间 小于开始时间则代表执行到次日
     * @return 当前时间是否属于执行时间内
     */
    public static boolean isExecuteTime(String start,String end){
        //省略非空校验..
        LocalTime startTime = LocalTime.parse(start, DateTimeFormatter.ofPattern("H:m"));
        LocalTime endTime = LocalTime.parse(end, DateTimeFormatter.ofPattern("H:m"));
        LocalTime now = LocalTime.now();
        //开始时间大于结束时间说明是今日执行到次日
        if(startTime.isAfter(endTime)){
            return now.isBefore(endTime) || now.isAfter(startTime);
            //开始时间小于结束时间说明是今日执行
        }else if(startTime.isBefore(endTime)){
            return now.isAfter(startTime) && now.isBefore(endTime);
        }
        //如果相等则是全天执行
        return true;
    }
}