2016-12-28 46 views
1

我知道crontab表达式没有“年”表达式。但是我想知道,如果有一种解决方法或某种可以使Hangfire在特定年份启动/停止计划的方法。如果有开始日期和结束日期,Hangfire如何编写crontab?

例如,假设一个案例:

  • 假定当前日期是2016年9月15日

  • 计划开始于2016年,12月,由上午8:30每小时1次

  • 重复直到下午5点30分(办公时间)

  • 星期一 - 星期五发生在工作日

  • 结束于2018,Februrary,1

从,它可能需要在某些情况下超过1级的crontab表达的其它交解读。但对于这个,我不知道如何写。原因:

如果我写:

  • “30 8 112 0-4”:它仅规定12月1日
  • “30 * 8 * 0-4”:它不知道哪些月开始或结束

如何编写此crontab?

+0

张贴在此之后,我想也许开始日期可以通过使用“延迟任务”与指定的日期可能处理。在延迟任务中,引入循环任务... 同时,结束日期(年度信息)存储在另一列中,每当任务运行时,检索年份以查看它是否仍在当前年份之内信息...如果没有,请删除作业... – zeroflaw

回答

2

不确定一个干净的方式。但它可能在这个方式之 晚五的工作来处理:

2延迟乔布斯就开始日期和结束日期运行(StartDateDelayedJob,EndDateDelayedJob)

3重复的作业 -

  1. 1:用cron表达式(* */1 * * 1-5)从星期一到星期五每小时运行一次预期任务,
  2. 第二个用cron表达式(30 8 * * 1-5)每天添加第一个重复任务8 30如果是星期一至星期五,
  3. 如果是星期一至星期五,则以(30 17 * * 1-5)的cron表达式以每天5 30除去第一个重复作业。

StartDateDelayedJob将添加第2次重复作业和第3次重复作业。

EndDateDelayedJob将删除两个重复作业。

希望这有助于

+0

感谢您的回答。我在想,也许这可以提高到只有3个工作? 首先:一个延迟作业在开始日期运行。第二:来自(1)的作业是运行表达式(30 8-17 * * 1-5)的循环作业。 第三:一个延迟作业在结束日期上运行。这项工作是从(2) – zeroflaw

+0

中删除重复的工作你是否改变只有5个工作?我会接受这个答案。 (如果你同意我的观点) – zeroflaw

+0

上面的答案已经有五份工作。你能解释一下你希望我改变或同意吗?在此先感谢 –

相关问题