如何从日期开始每 14 天执行一次 Hangfire 作业

How to execute a Hangfire job every 14 days starting from a date

我可以使用 Hangfire 记录每两周一次的作业,

if (vm.ReportInterval == 14)
                        {
                            reportFrequency = Cron.DayInterval(14);
                        }

这是正常的,并且在做它应该做的事情。

但我想要的是在特定日期开始工作,然后每 14 天重复一次。

本质上,需要传递第二个参数给cron.DayInterval。

示例(不支持):

 if (vm.ReportInterval == 14)
               {
                  reportFrequency = Cron.DayInterval(14,new DateTime(2018,17,05));
               }

我查看了 Cron class,但它没有支持的方法:

Hangfire 上是否有另一个 class 来完成这项工作?

另一种方法是每周做一份工作,然后

但如果有更好的方法,我真的不想那样做。

您需要创建一个如下所示的 RecurringJob:

RecurringJob.AddOrUpdate<IExportService>(
            "Export data",
            x => x.ExportToEmail(),
            "0 0 0 1/14 * ? *");

重要的一点是最后一个参数,它是一个 cron 表达式,表示:

Run this job At 00:00:00am, every 14 days starting on the 1st, every month

如果你想创建另一个 cron 表达式,我建议使用这个在线生成器:

https://www.freeformatter.com/cron-expression-generator-quartz.html