CronExpressions - any librarys out there to generate them/convert them into human readable form?

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.

Answers


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


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

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.


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

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


Someone asked the same question few months ago. I've never been able to find something like that. I ended up doing my own "configurator" but my requirements were quite simple.


Need Your Help