Meziantou.Framework.Scheduling 2.0.11

Prefix Reserved
dotnet add package Meziantou.Framework.Scheduling --version 2.0.11
                    
NuGet\Install-Package Meziantou.Framework.Scheduling -Version 2.0.11
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Meziantou.Framework.Scheduling" Version="2.0.11" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Meziantou.Framework.Scheduling" Version="2.0.11" />
                    
Directory.Packages.props
<PackageReference Include="Meziantou.Framework.Scheduling" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Meziantou.Framework.Scheduling --version 2.0.11
                    
#r "nuget: Meziantou.Framework.Scheduling, 2.0.11"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Meziantou.Framework.Scheduling@2.0.11
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Meziantou.Framework.Scheduling&version=2.0.11
                    
Install as a Cake Addin
#tool nuget:?package=Meziantou.Framework.Scheduling&version=2.0.11
                    
Install as a Cake Tool

Meziantou.Framework.Scheduling

This package supports 2 schedule formats:

  • Recurrence rules (RRULE) as defined in RFC5545 and RFC2445
  • Cron expressions

Recurrence rules (RRULE)

Parse recurrence rules:

var rrule = "FREQ=DAILY;UNTIL=20000131T140000Z;BYMONTH=1";
if (RecurrenceRule.TryParse(rrule, out var rule, out var error))
{
    var nextOccurrences = rule.GetNextOccurrences(DateTime.Now).Take(50).ToArray();
}

Convert a recurrence rule to human-readable text:

var culture = CultureInfo.GetCultureInfo("en-US");
RecurrenceRule.Parse("FREQ=DAILY").GetHumanText(culture); // every day
RecurrenceRule.Parse("FREQ=WEEKLY;INTERVAL=3;BYDAY=TU;UNTIL=20150101").GetHumanText(culture); // every 3 weeks on Tuesday until January 1, 2015

Supported languages for human-readable text:

  • English (en, en-*, and invariant culture)
  • French (fr, fr-*)

Cron expressions

The library also provides CronExpression to parse and evaluate cron schedules.

var cron = CronExpression.Parse("0 */15 * * * *");
var occurrences = cron.GetNextOccurrences(DateTime.Now).Take(10).ToArray();

Supported formats

  • 5 fields: minute hour day-of-month month day-of-week
  • 6 fields: second minute hour day-of-month month day-of-week
  • 7 fields: second minute hour day-of-month month day-of-week year

When using the 5-field format, seconds are implicitly set to 0.

Field ranges

  • second: 0-59
  • minute: 0-59
  • hour: 0-23
  • day-of-month: 1-31
  • month: 1-12 or JAN-DEC
  • day-of-week: 0-6 or SUN-SAT (0 = Sunday)
  • year (optional): 1970-2099

Operators and special values

For all fields:

  • * or ?: any value
  • a,b,c: list
  • a-b: range
  • */n: step from field minimum
  • a-b/n: stepped range
  • a/n: step starting at a

Day-of-month field additionally supports:

  • L: last day of month
  • L-n: nth day before end of month (for example L-2)
  • LW: last weekday of month
  • nW: nearest weekday to day n

Day-of-week field additionally supports:

  • nL: last occurrence of weekday n in month
  • n#m: m-th occurrence of weekday n in month (m in 1-5)

Predefined schedules

  • @yearly / @annually
  • @monthly
  • @weekly
  • @daily / @midnight
  • @hourly

Notes

  • Parsing is case-insensitive for month/day names and predefined schedules.
  • day-of-month and day-of-week are combined with AND semantics. A date must satisfy both fields to match.
Product Compatible and additional computed target framework versions.
.NET 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 is compatible.  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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.11 161 3/22/2026
2.0.10 399 1/16/2026
2.0.9 352 11/2/2025
2.0.8 159 10/19/2025
2.0.7 252 9/3/2025
2.0.6 287 3/1/2025
2.0.5 683 11/17/2024
2.0.4 6,134 11/15/2023
2.0.3 1,020 12/12/2021
2.0.2 629 7/14/2021
2.0.1 565 4/22/2021
2.0.0 824 9/24/2020
1.0.13 1,269 6/25/2020
1.0.12 819 6/8/2020
1.0.11 813 10/23/2019
1.0.10 838 7/16/2019
1.0.9 992 10/21/2018
1.0.8 1,304 7/7/2018
1.0.7 1,597 9/10/2017
Loading failed