Skip to main content
net8.0net10.0.NETStandard2.0

Extension methods for creating chronology objects like `TimeSpan` or `DateTime` that read more natural.

Published
May 6, 2026
5mo ago
Total Downloads
42.9K
42,895

Install

dotnet add package aweXpect.Chronology --version 1.1.0
ProductVersions
.NET
net10.0net8.0
.NET Standard
netstandard2.0

README

aweXpect.Chronology

Changelog Nuget Coverage Mutation testing badge

Extension methods for creating chronology objects like TimeSpan or DateTime that read more natural.

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

Category Methods Example Result
TimeSpan units Milliseconds, Seconds, Minutes, Hours, Days 5.Minutes() TimeSpan
TimeSpan operators +, -, * (by double), / (by double), unary - 5.Minutes() * 2 TimeSpan
Date January … December 24.December(2024) DateTime
Time of day At(hours, minutes, [seconds], [milliseconds]), At(TimeSpan) 24.December(2024).At(18, 30) DateTime
Kind AsUtc, AsLocal 24.December(2024).AsUtc() DateTime
Offset WithOffset(TimeSpan) 24.December(2024).WithOffset(2.Hours()) DateTimeOffset
Relative Before, After 3.Hours().Before(25.December(2024)) DateTime
.NET 8+ conversions implicit casts to DateOnly / TimeOnly DateOnly 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());

Changes from Previous Version

v1.0.0v1.1.0
Added Frameworks
net10.0

Adoption Assessment

A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.

Compatibility metadata lists 3 target frameworks; confirm the exact target used by your application.

Related Guides & Workflows

Learn how to evaluate, integrate, or audit this package in your .NET project.