Cron表达式的时间范围

问题描述 投票:4回答:3

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

每天在凌晨2:15到5:20之间

cron quartz-scheduler
3个回答
5
投票

robyaw,

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

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 AM

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

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


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

哪个会翻译成(我相信):

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

1
投票

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

阅读更多关于the tutorialDailyCalendar API documentation日历的信息。

© www.soinside.com 2019 - 2024. All rights reserved.