From c350a86490bd8683d393328f0779d7286f39b1b8 Mon Sep 17 00:00:00 2001 From: chrisb Date: Wed, 19 Dec 2018 14:14:04 -0800 Subject: [PATCH] fix(core): fix next CRON trigger calculation offset --- .../core/src/pipeline/triggers/NextRunTag.tsx | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/app/scripts/modules/core/src/pipeline/triggers/NextRunTag.tsx b/app/scripts/modules/core/src/pipeline/triggers/NextRunTag.tsx index 2fa862377c6..f79bfd2f1fc 100644 --- a/app/scripts/modules/core/src/pipeline/triggers/NextRunTag.tsx +++ b/app/scripts/modules/core/src/pipeline/triggers/NextRunTag.tsx @@ -30,28 +30,13 @@ export class NextRunTag extends React.Component { - const parts = cron.cronExpression.split(' '); - const hours = parts[2]; - if (!isNaN(parseInt(hours, 10))) { - const allHours = hours.split('/'); - const tz = SETTINGS.defaultTimeZone; - let offset = moment.tz.zone(tz).offset(Date.now()); - if (offset) { - offset /= 60; - const start = parseInt(allHours[0], 10); - allHours[0] = ((start + offset) % 24).toString(); - parts[2] = allHours.join('/'); - } - } - const schedule = later.parse.cron(parts.join(' '), true); - const nextRun = later.schedule(schedule).next(1); + const timezoneOffsetInMs = moment.tz.zone(SETTINGS.defaultTimeZone).offset(Date.now()) * 60 * 1000; + const nextRun = later + .schedule(later.parse.cron(cron.cronExpression, true)) + .next(1, new Date(Date.now() - timezoneOffsetInMs)); + if (nextRun) { - nextTimes.push( - later - .schedule(schedule) - .next(1) - .getTime(), - ); + nextTimes.push(nextRun.getTime() + timezoneOffsetInMs); } }); if (nextTimes.length) {