【问题标题】:Quartz.Net Cron Expression for Monthly,Weekly and DailyQuartz.Net Cron 表达式为每月、每周和每日
【发布时间】:2012-04-26 13:45:06
【问题描述】:
我对quartz.net 和cron 表达式非常陌生,我必须在c# dotnet 应用程序中创建一个quartz.net 调度程序,它应该根据从数据库中获取的值在每月、每周和每天执行一次。
具有调度详细信息的表。
Id EffectiveDate StartTime Frequency
1 2012-04-22 20:55 Daily
2 2012-04-22 10:12 Weekly
3 2012-04-22 17:00 Daily
4 2012-04-23 02:15 Monthly
5 2012-04-26 18:30 Daily
6 2012-04-27 11:45 Weekly
请帮我解决这个问题。
【问题讨论】:
标签:
c#
quartz-scheduler
quartz.net
crontrigger
cronexpression
【解决方案1】:
@user1301587,希望你已经找到了前进的方向,但我注意到你的问题在 Google 上仍然很高,所以我会继续添加一些伪代码来说明我将如何做到这一点:
- 从您的数据源中获取计划(看起来像一个 RDBMS
你的情况下的数据库表)
-
遍历计划列表
并使用计划构建一个 CronScheduleBuilder 实例:
字符串 cronExpression = string.Format("{0} {1} {2} {3} {4} {5}",
第二部分,
分钟部分,
小时部分,
dayOfMonthPart,
月部分,
dayOfWeekPart
);
IScheduleBuilder scheduleBuilder = CronScheduleBuilder
.CronSchedule(cronExpression)
.InTimeZone(TimeZoneInfo.Utc);
例如cron 表达式 0 26 6 * * ? 每周每天早上 6:26 运行您的工作
我发现的一个问题是,如果您不指定时区,Quartz 将根据您当前的时区应用转换以将指定时间转换为 UTC 时间
现在您可以使用上面构建的时间表构建触发器:
ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
.WithIdentity("TestTrigger")
.WithSchedule(scheduleBuilder)
.Build();
使用THIS 站点构建 Quart.Net 风格的表达式