Skip to main content

aweXpect.Chronology

Nuget

Installation

dotnet add package aweXpect.Chronology

Or add a <PackageReference> to your project file:

<PackageReference Include="aweXpect.Chronology" Version="*" />

Supported target frameworks: .NET Standard 2.0, .NET 8, .NET 10. DateOnly and TimeOnly conversions require .NET 8 or higher.

Reference

CategoryMethodsExampleResult
TimeSpan unitsMilliseconds, Seconds, Minutes, Hours, Days5.Minutes()TimeSpan
TimeSpan operators+, -, * (by double), / (by double), unary -5.Minutes() * 2TimeSpan
DateJanuaryDecember24.December(2024)DateTime
Time of dayAt(hours, minutes, [seconds], [milliseconds]), At(TimeSpan)24.December(2024).At(18, 30)DateTime
KindAsUtc, AsLocal24.December(2024).AsUtc()DateTime
OffsetWithOffset(TimeSpan)24.December(2024).WithOffset(2.Hours())DateTimeOffset
RelativeBefore, After3.Hours().Before(25.December(2024))DateTime
.NET 8+ conversionsimplicit casts to DateOnly / TimeOnlyDateOnly d = 24.December(2024);DateOnly / TimeOnly

TimeSpan

Add the following extension methods on int and double that allow creating a TimeSpan:

  • .Milliseconds()
  • .Seconds()
  • .Minutes()
  • .Hours()
  • .Days()

Traditional:

TimeSpan timeout = TimeSpan.FromSeconds(10);

With aweXpect.Chronology:

TimeSpan timeout = 10.Seconds();

It is also possible to combine multiple extension methods:

TimeSpan timeout = 1.Minutes(30.Seconds());

The builder also supports arithmetic operators +, -, * (by double), / (by double) and unary negation:

TimeSpan doubled = 5.Minutes() * 2;
TimeSpan combined = 1.Minutes() + 30.Seconds();
TimeSpan negative = -10.Seconds();

DateTime

Add extension methods on int for each month that allow creating a DateTime:

Traditional:

DateTime time = new DateTime(2024, 12, 24);

With aweXpect.Chronology:

DateTime time = 24.December(2024);

A time of day can be specified with explicit components or a TimeSpan:

DateTime time = 24.December(2024).At(18, 30);
DateTime preciseTime = 24.December(2024).At(18, 30, 45, 500);
DateTime fromTimeSpan = 24.December(2024).At(18.Hours(30.Minutes()));

Set the DateTimeKind with AsUtc() or AsLocal():

DateTime utc = 24.December(2024).At(18, 30).AsUtc();
DateTime local = 24.December(2024).At(18, 30).AsLocal();

Combine with TimeSpan extensions to express relative dates with Before or After:

DateTime earlier = 3.Hours().Before(25.December(2024));
DateTime later = 3.Hours().After(25.December(2024));

DateTimeOffset

Use WithOffset to attach a UTC offset to a date or date-and-time:

DateTimeOffset time = 24.December(2024).At(14, 30).WithOffset(2.Hours());

DateOnly and TimeOnly (.NET 8+)

On .NET 8 and later, the builders implicitly convert to DateOnly and TimeOnly:

DateOnly date = 24.December(2024);
TimeOnly time = 18.Hours(30.Minutes());