File tree Expand file tree Collapse file tree 2 files changed +29
-1
lines changed
main/java/org/springframework/scheduling/support
test/java/org/springframework/scheduling/support Expand file tree Collapse file tree 2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change 1
1
/*
2
- * Copyright 2002-2020 the original author or authors.
2
+ * Copyright 2002-2021 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
@@ -192,6 +192,11 @@ public <T extends Temporal & Comparable<? super T>> T nextOrSame(T temporal) {
192
192
while (current != next && count ++ < CronExpression .MAX_ATTEMPTS ) {
193
193
temporal = type ().elapseUntil (temporal , next );
194
194
current = type ().get (temporal );
195
+ next = nextSetBit (current );
196
+ if (next == -1 ) {
197
+ temporal = type ().rollForward (temporal );
198
+ next = nextSetBit (0 );
199
+ }
195
200
}
196
201
if (count >= CronExpression .MAX_ATTEMPTS ) {
197
202
return null ;
Original file line number Diff line number Diff line change @@ -497,6 +497,29 @@ void friday13th() {
497
497
assertThat (actual .getDayOfMonth ()).isEqualTo (13 );
498
498
}
499
499
500
+ @ Test
501
+ public void everyTenDays () {
502
+ CronExpression cronExpression = CronExpression .parse ("0 15 12 */10 1-8 5" );
503
+
504
+ LocalDateTime last = LocalDateTime .parse ("2021-04-30T12:14:59" );
505
+ LocalDateTime expected = LocalDateTime .parse ("2021-05-21T12:15" );
506
+ LocalDateTime actual = cronExpression .next (last );
507
+ assertThat (actual ).isNotNull ();
508
+ assertThat (actual ).isEqualTo (expected );
509
+
510
+ last = actual ;
511
+ expected = LocalDateTime .parse ("2021-06-11T12:15" );
512
+ actual = cronExpression .next (last );
513
+ assertThat (actual ).isNotNull ();
514
+ assertThat (actual ).isEqualTo (expected );
515
+
516
+ last = actual ;
517
+ expected = LocalDateTime .parse ("2022-01-21T12:15" );
518
+ actual = cronExpression .next (last );
519
+ assertThat (actual ).isNotNull ();
520
+ assertThat (actual ).isEqualTo (expected );
521
+ }
522
+
500
523
@ Test
501
524
void yearly () {
502
525
CronExpression expression = CronExpression .parse ("@yearly" );
You can’t perform that action at this time.
0 commit comments