Cron表达式的时间范围

时间:2010-07-19 14:35:02

标签: cron quartz-scheduler

我正在使用Quartz.Net在我的应用程序中安排我的工作。我只是想知道是否可以构建以下场景的CRON表达式:

  

凌晨2:15到凌晨5:20之间的每一秒

3 个答案:

答案 0 :(得分:5)

罗比,

非常感谢您的回答。我为这种回复延迟道歉。我实际上已经离开了一段时间。您的解决方案确实有效我必须在我指定的时间范围内创建3个CRON触发器。你提到的时间范围是正确的。但是,对于您提到的3个CRON表达式。我担心他们可能无法按预期工作。这些表达式的工作时间范围为:2:15 AM - 5:20 AM - Everyday

1)* 15-59 2 * * ? - 从凌晨2:15到凌晨3:00,即凌晨2:15:00到凌晨2:59:59每秒钟

2)* 0-59 3-4 * * ? - 每天从凌晨3:00到凌晨5:00,即凌晨3:00:00到凌晨4:59:59

3)* 0-19 5 * * ? - 从凌晨5:00到凌晨5:20,即凌晨5:00:00到5:19:59,每秒钟

@gauteh:请注意,Quartz .Net实际上支持第二次触发。

希望这有助于其他可能需要解决类似问题的人。

答案 1 :(得分:4)

关于cron seconds支持,UNIX cron toolCRON Expression维基百科文章之间的语法似乎有所不同。但是,根据Quartz CRON Documentation,支持秒数。

鉴于上述情况,我将创建三个CRON触发器来处理:

  1. 2:15:00 - 2:59:59
  2. 3:00:00 - 4:59:59
  3. 5:00:00 - 5:19:59
  4. 哪个会转化为(我相信):

    1. * 15/1 2 * * ?
    2. * * 3-5 * * ?
    3. * 0-20 5 * * ?

答案 2 :(得分:1)

这里有一个间隔触发器(每秒)可以干净地转换为SimpleTrigger。你需要它是一个限制,只允许它在特定的时间范围内运行(2:15 - 5:20)。这可以通过使用日历,更准确地说是DailyCalendar来实现。您可以将每日日历设置为具有此时间范围,并将InvertTimeRange设置为true以包括范围,而不是默认排除范围。

详细了解the tutorialDailyCalendar API documentation中的日历。