NaturalCron 0.2.2
dotnet add package NaturalCron --version 0.2.2
NuGet\Install-Package NaturalCron -Version 0.2.2
<PackageReference Include="NaturalCron" Version="0.2.2" />
<PackageVersion Include="NaturalCron" Version="0.2.2" />
<PackageReference Include="NaturalCron" />
paket add NaturalCron --version 0.2.2
#r "nuget: NaturalCron, 0.2.2"
#:package NaturalCron@0.2.2
#addin nuget:?package=NaturalCron&version=0.2.2
#tool nuget:?package=NaturalCron&version=0.2.2
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.
- 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]
📖 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.
🔌 JobMaster Integration (Alpha)
Looking for a complete job scheduling solution with NaturalCron support? Check out JobMaster — a .NET job scheduling library that natively integrates with NaturalCron for human-readable scheduling.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- TimeZoneConverter (>= 7.0.0)
-
net8.0
- TimeZoneConverter (>= 7.0.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on NaturalCron:
| Package | Downloads |
|---|---|
|
JobMaster
JobMaster is a framework designed to manage and execute background tasks across a distributed cluster. |
|
|
NaturalCron.Quartz
Quartz.NET trigger extension for natural language scheduling. Schedule jobs with phrases like "every Monday at 9am" or "every 5 seconds". |
GitHub repositories
This package is not used by any popular GitHub repositories.
Include the Builder feature