diff --git a/service-scheduler/src/main/java/com/lanyuanxiaoyao/service/scheduler/quartz/distribute/strategy/DatetimeLimit.java b/service-scheduler/src/main/java/com/lanyuanxiaoyao/service/scheduler/quartz/distribute/strategy/DatetimeLimit.java index 4f25411..6a6cc10 100644 --- a/service-scheduler/src/main/java/com/lanyuanxiaoyao/service/scheduler/quartz/distribute/strategy/DatetimeLimit.java +++ b/service-scheduler/src/main/java/com/lanyuanxiaoyao/service/scheduler/quartz/distribute/strategy/DatetimeLimit.java @@ -4,6 +4,7 @@ import com.cronutils.model.CronType; import com.cronutils.model.definition.CronDefinitionBuilder; import com.cronutils.model.time.ExecutionTime; import com.cronutils.parser.CronParser; +import java.time.ZoneId; import java.time.ZonedDateTime; /** @@ -15,14 +16,16 @@ import java.time.ZonedDateTime; public class DatetimeLimit implements AvailableStrategy { private static final CronParser PARSER = new CronParser(CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ)); + private final Boolean runInPeriod; private final ExecutionTime execution; - public DatetimeLimit(String cron) { + public DatetimeLimit(Boolean runInPeriod, String cron) { + this.runInPeriod = runInPeriod; this.execution = ExecutionTime.forCron(PARSER.parse(cron)); } @Override public boolean available() { - return execution.isMatch(ZonedDateTime.now()); + return runInPeriod == execution.isMatch(ZonedDateTime.now().withNano(0)); } } diff --git a/service-scheduler/src/test/java/com/lanyuanxiaoyao/service/scheduler/TestStrategy.java b/service-scheduler/src/test/java/com/lanyuanxiaoyao/service/scheduler/TestStrategy.java new file mode 100644 index 0000000..26c63c6 --- /dev/null +++ b/service-scheduler/src/test/java/com/lanyuanxiaoyao/service/scheduler/TestStrategy.java @@ -0,0 +1,17 @@ +package com.lanyuanxiaoyao.service.scheduler; + +import com.lanyuanxiaoyao.service.scheduler.quartz.distribute.strategy.AvailableStrategy; +import com.lanyuanxiaoyao.service.scheduler.quartz.distribute.strategy.DatetimeLimit; + +/** + * @author lanyuanxiaoyao + * @date 2024-04-26 + */ +public class TestStrategy { + public static void main(String[] args) { + AvailableStrategy strategy = AvailableStrategy.and( + new DatetimeLimit(false, "* * 7-19 28-30 4 ? 2024") + ); + System.out.println(strategy.available()); + } +}