"Now" surfaces — System Clock stack
The System Clock stack exposes BCL "now" projections on IPrimeClock: DateTimeOffset, DateTime, TimeOnly, and DateOnly for both local and UTC time.
ServiceCollection services = [];
services.AddPrimeClock();
using ServiceProvider serviceProvider = services.BuildServiceProvider();
IPrimeClock primeClock = serviceProvider.GetRequiredService<IPrimeClock>();
ScenarioConsole.WriteLine($"LocalNowDateTimeOffset: {primeClock.LocalNowDateTimeOffset:O}");
ScenarioConsole.WriteLine($"UtcNowDateTimeOffset: {primeClock.UtcNowDateTimeOffset:O}");
ScenarioConsole.WriteLine($"LocalNowDateTime: {primeClock.LocalNowDateTime:O}");
ScenarioConsole.WriteLine($"UtcNowDateTime: {primeClock.UtcNowDateTime:O}");
ScenarioConsole.WriteLine($"LocalNowTimeOnly: {primeClock.LocalNowTimeOnly}");
ScenarioConsole.WriteLine($"LocalNowDateOnly: {primeClock.LocalNowDateOnly}");
return Task.CompletedTask;
What to notice
LocalNowDateTimeOffset/UtcNowDateTimeOffsetpreserve UTC offset and are the recommended surfaces for time-zone-aware code.LocalNowDateTimereturns aDateTimewithKind = DateTimeKind.Local;UtcNowDateTimereturnsDateTimeKind.Utc.LocalNowTimeOnly/LocalNowDateOnlyare convenience projections built on thenet8.0+net10.0target frameworks.- The PrimeTime / NodaTime stack adds
Instant,ZonedDateTime,LocalTime, andLocalDateprojections on top of these.
Related
- Usage guide: KZDev.SystemClock.PrimeTime
- Concepts: Choosing a package
- API:
IPrimeClock