NaturalCron is a human-readable scheduling engine for .NET. It lets you write schedules in a clear and intuitive way instead of memorizing cryptic cron strings.
Why? Because memorizing 0 18 * * 1-5
is harder than understanding every day between monday and friday at 6:00pm
.
Readable schedules reduce mistakes, write expressions that you can understand at a glance.
Note: NaturalCron is not a cron converter. It’s a new expressive syntax for better readability.
- Readable syntax:
every 30 minutes in [jan, jun] between 09:00 and 18:00
- Fluent Builder API: Strongly typed for .NET developers.
- No online generators needed.
- Features:
- Ranges
- Weekday list
- Closest weekday, first/last day handling
- Time zone support with IANA TZ names
using System;
using NaturalCron;
// Define an advanced expression
string expression = "every 30 minutes in [jan, jun] between 09:00 and 18:00";
// Parse and calculate next occurrence (local time)
NaturalCronExpr schedule = NaturalCronExpr.Parse(expression);
DateTime next = schedule.GetNextOccurrence(DateTime.Now);
Console.WriteLine($"Next occurrence: {next}");
using System;
using NaturalCron;
using NaturalCron.Builder;
NaturalCronExpr schedule = NaturalCronBuilder
.Every(30).Minutes()
.In(NaturalCronMonth.Jan)
.Between("09:00", "18:00")
.Build();
DateTime next = schedule.GetNextOccurrenceInUtc(DateTime.UtcNow);
Console.WriteLine($"Next occurrence in UTC: {next}");
⚡ Try it online: Run on .NET Fiddle
Task | Cron Expression | NaturalCron Expression |
---|---|---|
Every 5 minutes | */5 * * * * |
every 5 minutes |
Every weekday at 6 PM | 0 18 * * 1-5 |
every day between mon and fri at 18:00 |
Every 30 min in Jan and Jun (9:00-18:00) | (Complex in cron) | every 30 minutes in [jan, jun] between 09:00 and 18:00 |
Examples:
every 5 minutes
every day at 18:00
every 30 minutes in [jan, jun] between 09:00 and 18:00
every day at 10:00 on [monday, wednesday, friday]
dotnet add package NaturalCron
-
Expression Syntax — Learn how to write human-readable recurrence rules.
-
Fluent Builder Guide — Build expressions easily with type safety and IntelliSense.
-
API Reference — Full API details and usage examples.
-
Quartz.NET Integration — Use NaturalCron with Quartz.NET triggers.
⚠️ Alpha: API and features may change.
Quartz.NET integration (Alpha), letting you use human-readable schedules in Quartz triggers.
Contributions, bug reports, and feature requests are welcome!
Please open an issue or submit a pull request.
If you enjoy using NaturalCron and would like to support its future development, consider buying me a coffee. Your support helps keep the project alive and growing!