Как проверить дату против выражения Cron - PullRequest
0 голосов
/ 29 ноября 2018

Мне нужно проверить, соответствует ли определенная дата выражению cron, используя Quartz.Net .Я пытаюсь заставить работать приведенный ниже код, но не получается.

// The data I'm testing is Dec 4, 2018 which is a Tuesday.
var date = new DateTimeOffset(2018, 12, 4, 0, 0, 0, TimeSpan.FromHours(0));

// Expression must define every monday, time is irrelevant
var expression = new CronExpression("0 0 0 ? * MON *");

// This returns 2018-12-09. But the next Monday after my date is 2018-12-10 !!
var next = expression.GetNextValidTimeAfter(date);

Если вы посмотрите мои комментарии, Кварц вернет 2018-12-09 в следующий понедельник.Но это воскресенье ... Я не понимаю, почему, возможно, неправильно понимаю элемент времени - который мне совсем не нужен.

Кстати, вот мое выражение от CronMaker: enter image description here

Так что, думаю, выражение в порядке.Есть намеки?

1 Ответ

0 голосов
/ 29 ноября 2018

выяснил почему.В CronExpression отсутствует часовой пояс.Так, например:

 var date = new DateTimeOffset(2018, 12, 4, 0, 0, 0, TimeSpan.FromHours(0));
 var expression = new CronExpression("0 0 0 ? * MON *") { TimeZone = TimeZoneInfo.Utc };
 var next = expression.GetNextValidTimeAfter(date);

Вернется правильно для меня сейчас.

...