You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Justin Novak (JIRA)" <ji...@apache.org> on 2016/06/16 22:13:05 UTC
[jira] [Created] (AMQ-6327) getNextScheduledTime() returns
incorrect time when working with day of month
Justin Novak created AMQ-6327:
---------------------------------
Summary: getNextScheduledTime() returns incorrect time when working with day of month
Key: AMQ-6327
URL: https://issues.apache.org/jira/browse/AMQ-6327
Project: ActiveMQ
Issue Type: Bug
Components: Broker
Affects Versions: 5.13.3, 5.12.0
Reporter: Justin Novak
Given the following code
{code:java}
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();
}
{code}
The output is
{code}
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'
{code}
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 current month but incorrect day of month every other month
I've tested this on both v5.12.0 and v5.13.3
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)