CronExpressions - 有没有任何库可以生成它们/将它们转换为人类可读形式?

27

我正在使用Quartz.NET,我的调度程序严重依赖于cron表达式的使用,例如在此链接中详细说明的表达式:

http://quartznet.sourceforge.net/tutorial/lesson_6.html

理想情况下,我希望能够实现以下两种场景(第一种可能更加困难,而且可能没有相关内容可供使用):
1:用户可以在ASP.NET表单上构建cron表达式,选择分钟、小时、天等。
2:将cron表达式转换为短字符串,例如“每个星期五的{x}分钟”或“每月最后一天的{x}点”。
我已经开始编写自己的版本,但这是一个非常繁重的任务,如果有库或任何提示和技巧,我会很高兴找到它们。
注意:如果没有相关内容可用,而我又(相对)成功地创建了代码,我会很乐意分享源代码。

1
请发布您的库版本。这对我很有用。谢谢。 - Gerardo Grignoli
4个回答

40

3
你知道是否有一种工具可以完成相反的操作吗?输入 "在周一至周五上午11:30" 然后让它返回 ""30 11 * * 1-5""。 - Jeremy Thompson
@JeremyThompson 对于简单的表达式,GPT4可以做到。但对于复杂的表达式,它可能会出错。 - Pēteris Caune
1
@PēterisCaune我想我可以复制这个评论并将其放在几乎任何其他评论下面,它仍然是有效的! - Jeremy Thompson

14

使用最新的 Quartz.NET(截至本文撰写为2.1版本),您可以通过使用CronScheduleBuilder来获取Cron表达式。

获取每天作业的表达式:

var t = CronScheduleBuilder.DailyAtHourAndMinute(10, 0).Build() as CronTriggerImpl;
Console.WriteLine(t.CronExpressionString);// This is the actual Cron
Console.WriteLine(t.GetExpressionSummary()); // This is the description of that Cron

这个网站是使用Quartz构建的:链接,对于想要从人类可读的GUI构建表达式的人来说,可能是一个有用的例子。 - sɐunıɔןɐqɐp

4
我最终使用了这个 jQuery 插件,它提供了一个漂亮的界面,然后使用隐藏域将其保存到 .net/c# 数据库中。
插件链接:http://shawnchin.github.com/jquery-cron/ 对我来说非常好用。如果您像我一样使用 quartz.net,那么可能需要检查字符串前面是否设置了秒钟为 "0",因为此插件不支持秒钟。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接