如何针对Cron表达式测试日期

时间:2018-11-29 12:55:31

标签: c# cron quartz.net

我需要使用Quartz.Net测试某个日期是否与cron表达式匹配。我正在尝试使以下代码正常工作,但失败了。

// 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);

如果您查看我的评论,Quartz将在下一个星期一返回2018-12-09。但这是一个星期天...我不明白为什么,也许是误解了时间因素-我根本不需要。

这是我来自CronMaker的表情: enter image description here

所以我想表达是可以的。 有什么提示吗?

1 个答案:

答案 0 :(得分:0)

找出原因。 CronExpression缺少TimeZone。 例如:

 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);

现在会为我正确返回。