aweXpect.Chronology
1.1.0
Prefix Reserved
dotnet add package aweXpect.Chronology --version 1.1.0
NuGet\Install-Package aweXpect.Chronology -Version 1.1.0
<PackageReference Include="aweXpect.Chronology" Version="1.1.0" />
<PackageVersion Include="aweXpect.Chronology" Version="1.1.0" />
<PackageReference Include="aweXpect.Chronology" />
paket add aweXpect.Chronology --version 1.1.0
#r "nuget: aweXpect.Chronology, 1.1.0"
#:package aweXpect.Chronology@1.1.0
#addin nuget:?package=aweXpect.Chronology&version=1.1.0
#tool nuget:?package=aweXpect.Chronology&version=1.1.0
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());
| 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 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. |
| .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
- No dependencies.
-
net10.0
- No dependencies.
-
net8.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.