基于用户输入以编程方式创建 Hangfire cron 表达式

Programmatically creating Hangfire cron expression based on user input

我有一个 C# .NET Web 应用程序,其 UI 看起来类似于 http://www.cronmaker.com/。用户可以从许多选项中 select 工作的频率。我需要能够创建一个 cron 表达式来表示用户所需的频率,并且它必须与 Hangfire 兼容。我的想法是:

  1. 找到一个现有的图书馆。但我一直做不到。我听说 Quartz 可以做到这一点(虽然它会有点矫枉过正),但它似乎可以为某些情况创建 cron 表达式,但不能为其他情况创建。

  2. 制作我自己的工具,使用cronmaker.com找出格式。但是,cronmaker 以 Hangfire 认为无效的格式创建 cron 表达式。对于 "every hour," cronmaker 说“0 0 0/1 1/1 * ? *”,Hangfire 说这是无效的。我发现“0 */1 * * *”有效。

我需要能够动态生成任何 cron 表达式。肯定有一个库可以执行 CronLibrary.GetCronExpression(Frequency.EveryNDays, 3, "12:00") 之类的操作,并提供涵盖所有可能情况的选项。有人知道这样的图书馆吗?

我没有找到库,但是站点 http://crontab.guru/ 对于创建对 Hangfire 有效的 cron 表达式非常有帮助。使用该站点作为参考,我能够编写代码将 UI 选择映射到 cron 表达式,反之亦然。