27

I am using Quartz.NET, and my scheduler relies heavily on the use of cron expression's - such as the ones detailed on this link:

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

Ideally, I'd like the 2 scenarios to be made possible (the 1st is probably much difficult, and less likely to be anything out there for it)

1: The ability for the user to construct a cron expression on an ASP.NET form, where they choose which minutes, hours, days etc

2: The ability to turn a cron expression into a short string, such as 'Every {x} minutes on Friday' or 'At {x} o clock on the last day of every month'

I've begun writing my own versions of these, but it's a very hefty task and I'd love to find out there's a library out there, or even to have any hints and tips on this off you guys.

Note: If there is nothing out there for this and I am (relatively) successful in creating the code, I'll gladly share the source if anyone wants it.

Chris
  • 7,415
  • 21
  • 98
  • 190

4 Answers4

40

I wrote a C# library that does just this. It's called cron-expression-descriptor. https://github.com/bradymholt/cron-expression-descriptor.

Brady Holt
  • 2,844
  • 1
  • 28
  • 34
14

Using the latest Quartz.NET (2.1 as of this writing) you can get the Cron expression by using the CronScheduleBuilder.

Getting the expression for daily jobs:

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
Community
  • 1
  • 1
Jonas Stawski
  • 6,682
  • 6
  • 61
  • 106
  • This website was built using Quartz: [link](http://www.cronmaker.com), might be a useful example for who wants to build expressions from human readable GUI. – sɐunıɔןɐqɐp Apr 19 '17 at 13:22
4

I ended up using this jquery plugin which provides a nice interface and then using a hidden field to save this to a database in .net/c#.

http://shawnchin.github.com/jquery-cron/

It works quite well for me. You may need to check that you are setting seconds at the front of the string to "0" though if using quartz.net though like I was as this plugin doesn't support seconds.

Adam Seabridge
  • 1,909
  • 1
  • 20
  • 27
2

I used NCrontab a while ago http://www.raboof.com/Projects/NCrontab/

But it seems it does not translate it to Human Readable...

jjchiw
  • 4,375
  • 1
  • 29
  • 30