问题描述
在Quartz.Net中,我如何表达一个计划作业,该计划作业在周一至周日上午7:20 AM-8:30PM之间每x分钟触发一次?我有些困惑,测试需要一些时间来确认。
根据https://www.freeformatter.com/cron-expression-generator-quartz.html,它将是“ 0 20-30 7-18?* MON,TUE,WED,THU,FRI,SAT,SUN *”,但是我该如何表达7:20-18 :30?
2020年9月15日星期二07:20:00 星期二九月15 07:21:00 UTC 2020 星期二九月15 07:22:00 UTC 2020 星期二九月15 07:23:00 UTC 2020 星期二九月15 07:24:00 UTC 2020 星期二九月15 07:25:00 UTC 2020 星期二九月15 07:26:00 UTC 2020 星期二九月15 07:27:00 UTC 2020 星期二九月15 07:28:00 UTC 2020 星期二九月15 07:29:00 UTC 2020
描述为“每个月的每个星期一,星期二,星期三,星期三,星期四,星期五,星期六和星期日的第二个00:00:在20:30和30:30之间的每一分钟,在上午7:00和18:00之间的每小时”。 >
解决方法
根据这些信息,由于您无法指定确切的时间,因此实际上将需要三个cron表达式:
0 00-30/X 18-19 ? * *
0 20-59/X 07-08 ? * *
0 0/X 08-18 ? * *
我摆脱了周一至周日,因为这意味着每一天。第一个是在下午6点至下午6:30之间运行。第2个cron表达式在上午7:20到上午8点之间运行。第三轮在上午8点至下午6点之间运行。
/ X每隔X分钟运行一次。
,如果您使用的是quartz.net,则可能需要查看其他触发器类型而不是cron表达式。
看看.WithDailyTimeIntervalSchedule
.WithDailyTimeIntervalSchedule(s=>
s.WithIntervalInMinutes(15)
.StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(7,20))
.EndingDailyAt(TimeOfDay.HourAndMinuteOfDay(20,30))