mirror of
https://github.com/frode-carlsen/cron.git
synced 2025-12-06 14:00:57 +03:00
Merge pull request #8 from set-de/master
Reset hours on skip of day or month
This commit is contained in:
@@ -191,12 +191,12 @@ public class CronExpression {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
ZonedDateTime setValue(ZonedDateTime dateTime, int value) {
|
ZonedDateTime setValue(ZonedDateTime dateTime, int value) {
|
||||||
return dateTime.withDayOfMonth(value).withMinute(0).withSecond(0).withNano(0);
|
return dateTime.withDayOfMonth(value).withHour(0).withMinute(0).withSecond(0).withNano(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
ZonedDateTime overflow(ZonedDateTime dateTime) {
|
ZonedDateTime overflow(ZonedDateTime dateTime) {
|
||||||
return dateTime.plusMonths(1).withDayOfMonth(0).withMinute(0).withSecond(0).withNano(0);
|
return dateTime.plusMonths(1).withDayOfMonth(0).withHour(0).withMinute(0).withSecond(0).withNano(0);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
MONTH(1, 12,
|
MONTH(1, 12,
|
||||||
@@ -208,12 +208,12 @@ public class CronExpression {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
ZonedDateTime setValue(ZonedDateTime dateTime, int value) {
|
ZonedDateTime setValue(ZonedDateTime dateTime, int value) {
|
||||||
return dateTime.withMonth(value).withDayOfMonth(1).withMinute(0).withSecond(0).withNano(0);
|
return dateTime.withMonth(value).withDayOfMonth(1).withHour(0).withMinute(0).withSecond(0).withNano(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
ZonedDateTime overflow(ZonedDateTime dateTime) {
|
ZonedDateTime overflow(ZonedDateTime dateTime) {
|
||||||
return dateTime.plusYears(1).withMonth(1).withDayOfMonth(1).withMinute(0).withSecond(0).withNano(0);
|
return dateTime.plusYears(1).withMonth(1).withHour(0).withDayOfMonth(1).withMinute(0).withSecond(0).withNano(0);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
DAY_OF_WEEK(1, 7, Arrays.asList("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")) {
|
DAY_OF_WEEK(1, 7, Arrays.asList("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN")) {
|
||||||
|
|||||||
@@ -823,4 +823,67 @@ public class CronExpressionTest {
|
|||||||
ZonedDateTime expected = ZonedDateTime.of(2016, 2, 29, 0, 0, 0, 0, zoneId);
|
ZonedDateTime expected = ZonedDateTime.of(2016, 2, 29, 0, 0, 0, 0, zoneId);
|
||||||
assertTrue(CronExpression.createWithoutSeconds("* * 29 2 *").nextTimeAfter(after).equals(expected));
|
assertTrue(CronExpression.createWithoutSeconds("* * 29 2 *").nextTimeAfter(after).equals(expected));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemSameMonth() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-01-02T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * 1-8 1 *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2020-01-01T23:50:00Z")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemNextMonth() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-02-01T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * 1-8 2 *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2020-01-31T23:50:00Z")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemNextYear() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-01-01T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * 1-8 1 *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2019-12-31T23:50:00Z")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemNextMonthMonthAst() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-02-01T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * 1-8 * *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2020-01-31T23:50:00Z")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemNextYearMonthAst() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-01-01T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * 1-8 * *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2019-12-31T23:50:00Z")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemNextMonthDayAst() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-02-01T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * * 2 *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2020-01-31T23:50:00Z")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemNextYearDayAst() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-01-01T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * * 1 *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2019-12-31T22:50:00Z")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemNextMonthAllAst() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-02-01T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * * * *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2020-01-31T23:50:00Z")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testTriggerProblemNextYearAllAst() {
|
||||||
|
assertEquals(ZonedDateTime.parse("2020-01-01T00:50:00Z"),
|
||||||
|
new CronExpression("00 50 * * * *")
|
||||||
|
.nextTimeAfter(ZonedDateTime.parse("2019-12-31T23:50:00Z")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user