Browse Source

Merge branch '5.3.x'

pull/28075/head
Arjen Poutsma 4 years ago
parent
commit
3463106532
  1. 9
      spring-context/src/main/java/org/springframework/scheduling/support/CronField.java
  2. 8
      spring-context/src/test/java/org/springframework/scheduling/support/CronExpressionTests.java

9
spring-context/src/main/java/org/springframework/scheduling/support/CronField.java

@ -269,7 +269,14 @@ abstract class CronField { @@ -269,7 +269,14 @@ abstract class CronField {
int current = get(temporal);
ValueRange range = temporal.range(this.field);
long amount = range.getMaximum() - current + 1;
return this.field.getBaseUnit().addTo(temporal, amount);
T result = this.field.getBaseUnit().addTo(temporal, amount);
current = get(result);
range = result.range(this.field);
// adjust for daylight savings
if (current != range.getMinimum()) {
result = this.field.adjustInto(result, range.getMinimum());
}
return result;
}
/**

8
spring-context/src/test/java/org/springframework/scheduling/support/CronExpressionTests.java

@ -1336,6 +1336,14 @@ class CronExpressionTests { @@ -1336,6 +1336,14 @@ class CronExpressionTests {
actual = cronExpression.next(last);
assertThat(actual).isNotNull();
assertThat(actual).isEqualTo(expected);
cronExpression = CronExpression.parse("0 5 0 * * *");
last = ZonedDateTime.parse("2021-03-28T01:00:00+01:00[Europe/Amsterdam]");
expected = ZonedDateTime.parse("2021-03-29T00:05+02:00[Europe/Amsterdam]");
actual = cronExpression.next(last);
assertThat(actual).isNotNull();
assertThat(actual).isEqualTo(expected);
}
@Test

Loading…
Cancel
Save