Install
| Product | Versions |
|---|---|
| .NET | |
| .NET Standard |
README
aweXpect.Chronology
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
Adoption Assessment
A verified publisher signal is available. Assess fit from the package's supported frameworks, license and dependency graph rather than popularity alone.
Related Guides & Workflows
Learn how to evaluate, integrate, or audit this package in your .NET project.