在C#中计算Cron下一次运行时间

use*_*945 12 c# algorithm crontab

我有类似crontab的调度程序.时间定义"MM HH WD MD M":

MM-分钟
HH-小时
WD-星期
MD - 月日
M - 月

WD,MD和M允许多个条目,每个参数可以为空,例如:

^ ^  0, 1  ^ ^      means exucution every minute, every hour, at sunday and mondey, every day<br>

35 15 ^ ^ ^    execution every day at 15.35<br>
Run Code Online (Sandbox Code Playgroud)

如果您知道上次执行日期,问题是如何计算下一次运行时间.我知道如何使用循环(只需加1分钟直到它符合条件),但必须有更好的方法.

dev*_*oms 20

我已经成功地将NCrontab用于此目的.

使用类似的东西

var schedule = CrontabSchedule.Parse("15 35 * * *");
return schedule.GetNextOccurrence(DateTime.Now);
Run Code Online (Sandbox Code Playgroud)


小智 6

克洛诺斯是解决这个问题的另一个绝佳选择。