Details
Description
Given the following code
DateFormat format = new SimpleDateFormat("yyyy/MM/dd"); try { // cron, currentDate, expectedDate String[][] tests = new String[][]{ { "0 0 1 * *", "2016/04/15", "2016/05/01" }, { "0 0 1,15 * *", "2016/04/15", "2016/05/01" }, { "0 0 1 * *", "2016/05/15", "2016/06/01" }, { "0 0 1,15 * *", "2016/05/15", "2016/06/01" }, { "0 0 1 * *", "2016/06/15", "2016/07/01" }, { "0 0 1,15 * *", "2016/06/15", "2016/07/01" }, }; String cron; Date currentDate; Date expectedDate; Date nextDate; for (int i = 0; i < tests.length; i++) { cron = tests[i][0]; currentDate = format.parse(tests[i][1]); expectedDate = format.parse(tests[i][2]); nextDate = new Date(CronParser.getNextScheduledTime(cron, currentDate.getTime())); System.out.println(String.format("CronParser.getNextScheduledTime('%s', '%s') == '%s' // Expected: '%s'", cron, currentDate, nextDate, expectedDate)); } } catch (Exception e) { e.printStackTrace(); }
The output is
CronParser.getNextScheduledTime('0 0 1 * *', 'Fri Apr 15 00:00:00 UTC 2016') == 'Wed Jun 01 00:00:00 UTC 2016' // Expected: 'Sun May 01 00:00:00 UTC 2016' CronParser.getNextScheduledTime('0 0 1,15 * *', 'Fri Apr 15 00:00:00 UTC 2016') == 'Sun May 15 00:00:00 UTC 2016' // Expected: 'Sun May 01 00:00:00 UTC 2016' CronParser.getNextScheduledTime('0 0 1 * *', 'Sun May 15 00:00:00 UTC 2016') == 'Wed Jun 01 00:00:00 UTC 2016' // Expected: 'Wed Jun 01 00:00:00 UTC 2016' CronParser.getNextScheduledTime('0 0 1,15 * *', 'Sun May 15 00:00:00 UTC 2016') == 'Wed Jun 01 00:00:00 UTC 2016' // Expected: 'Wed Jun 01 00:00:00 UTC 2016' CronParser.getNextScheduledTime('0 0 1 * *', 'Wed Jun 15 00:00:00 UTC 2016') == 'Mon Aug 01 00:00:00 UTC 2016' // Expected: 'Fri Jul 01 00:00:00 UTC 2016' CronParser.getNextScheduledTime('0 0 1,15 * *', 'Wed Jun 15 00:00:00 UTC 2016') == 'Fri Jul 15 00:00:00 UTC 2016' // Expected: 'Fri Jul 01 00:00:00 UTC 2016'
When given 1 for the day of month it's returning 1 month to many every other month
When given 1,15 for the day of month it's returning the correct month but incorrect day of month every other month
I've tested this on both v5.12.0 and v5.13.3