Issue444Test.java
package com.cronutils;
import com.cronutils.model.Cron;
import com.cronutils.model.CronType;
import com.cronutils.model.definition.CronDefinitionBuilder;
import com.cronutils.model.time.ExecutionTime;
import com.cronutils.parser.CronParser;
import org.junit.jupiter.api.Test;
import java.time.Clock;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Optional;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class Issue444Test {
@Test
public void testCase1() {
CronParser parser = new CronParser(CronDefinitionBuilder.instanceDefinitionFor(CronType.QUARTZ));
Cron cron = parser.parse("0 40 08 ? * *");
Clock clock = Clock.fixed(Instant.ofEpochMilli(1601426291898L), ZoneId.of("UTC"));
ZonedDateTime startDate = ZonedDateTime.now(clock);
final ExecutionTime executionTime = ExecutionTime.forCron(cron);
Optional<ZonedDateTime> date = executionTime.nextExecution(startDate);
assertEquals(ZonedDateTime.of(2020, 9, 30, 8, 40, 0, 0, ZoneId.of("UTC")), date.get());
}
}