NaturalCron
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.
💡 Why use NaturalCron?
Readable syntax : every 30 minutes in [jan, jun] between 09:00 and 18:00
: Fluent Builder API : Strongly typed for .NET developers.
: 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
:
🚀 Quick Start
Using an Expression
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 Fluent Builder
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
🆚 Cron vs NaturalCron
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
📝 Syntax Overview
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]
📦 Installation
dotnet add package NaturalCron
📖 Documentation
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.
🤝 Contributing
Contributions, bug reports, and feature requests are welcome!
Please open an issue or submit a pull request.
❤️ Support the Project
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!