.NET Library to handle intervals (composite start and end)
$ dotnet add package Ephemeral

C# Library to handle time intervals (composite start and end)
null in many of the built-in operations.The API-documentation is hosted at albertogregorio.com/ephemeral.
var now = DateTimeOffset.UtcNow;
Interval yesterday = Interval.CreateOpen(now.AddDays(-1), now);
Interval today = yesterday.Shift(TimeSpan.FromDays(1));
yesterday.Overlaps(today); // returns true
IDisjointIntervalSet collection = new DisjointIntervalSet();
collection.Add(yesterday);
collection.Add(today);
collection.Start == yesterday.Start; // true
collection.End == today.End; // true
var yesterdayAndToday = yesterday.Union(today);
collection.equals(yesterdayAndToday); // true
var consolidatedCollection = yesterdayAndToday.Consolidate(); // joins the two internal intervals into one
yesterdayAndToday.Count(); // 2
consolidatedCollection.Count(); // 1