Vali-Range — Examples
dotnet add package Vali-Range
ThisQuarter — Get the Current Quarter Range
Retrieve the date range covering the current calendar quarter in a single call.
using Vali_Range.Core;
var vr = new ValiRange();
DateRange quarter = vr.ThisQuarter();
Console.WriteLine($"Quarter start: {quarter.Start:yyyy-MM-dd}"); // e.g. → 2025-01-01
Console.WriteLine($"Quarter end: {quarter.End:yyyy-MM-dd}"); // e.g. → 2025-03-31
Console.WriteLine($"Total days: {quarter.TotalDays}"); // → 90
Try it live
▶ Open in dotnetfiddle — Add the Vali-Range NuGet package in the fiddle settings.
Overlaps + Intersection — Detect and Extract Overlap Between Two Ranges
Check whether two project timelines overlap, then extract the exact shared period.
using Vali_Range.Core;
var vr = new ValiRange();
var projectA = vr.Create(new DateTime(2025, 1, 15), new DateTime(2025, 4, 30));
var projectB = vr.Create(new DateTime(2025, 3, 1), new DateTime(2025, 6, 30));
bool doOverlap = vr.Overlaps(projectA, projectB);
Console.WriteLine($"Overlap: {doOverlap}"); // → True
if (doOverlap)
{
DateRange shared = vr.Intersection(projectA, projectB);
Console.WriteLine($"Shared period: {shared.Start:yyyy-MM-dd} → {shared.End:yyyy-MM-dd}");
// → 2025-03-01 → 2025-04-30
Console.WriteLine($"Shared days: {shared.TotalDays}"); // → 61
}
Try it live
▶ Open in dotnetfiddle — Add the Vali-Range NuGet package in the fiddle settings.
EachDay — Iterate Every Day in a Range
Enumerate all calendar days within a range to generate a daily report scaffold.
using Vali_Range.Core;
var vr = new ValiRange();
var sprint = vr.Create(new DateTime(2025, 1, 6), new DateTime(2025, 1, 10));
Console.WriteLine("Sprint days:");
foreach (DateTime day in vr.EachDay(sprint))
{
Console.WriteLine($" {day:ddd, MMM dd yyyy}");
}
// → Mon, Jan 06 2025
// → Tue, Jan 07 2025
// → Wed, Jan 08 2025
// → Thu, Jan 09 2025
// → Fri, Jan 10 2025
Try it live
▶ Open in dotnetfiddle — Add the Vali-Range NuGet package in the fiddle settings.
Gaps — Find Uncovered Periods Between Ranges
Given a list of scheduled ranges and a bounding container, find all unscheduled gaps.
using Vali_Range.Core;
var vr = new ValiRange();
// Full year container
var year = vr.Create(new DateTime(2025, 1, 1), new DateTime(2025, 12, 31));
// Scheduled project ranges
var scheduled = new[]
{
vr.Create(new DateTime(2025, 1, 15), new DateTime(2025, 3, 31)),
vr.Create(new DateTime(2025, 5, 1), new DateTime(2025, 7, 31)),
vr.Create(new DateTime(2025, 9, 1), new DateTime(2025, 11, 30)),
};
var gaps = vr.Gaps(scheduled, year).ToList();
Console.WriteLine($"Unscheduled periods: {gaps.Count}");
foreach (var gap in gaps)
{
Console.WriteLine($" {gap.Start:MMM dd} → {gap.End:MMM dd} ({gap.TotalDays} days)");
}
// → Jan 01 → Jan 14 (14 days)
// → Apr 01 → Apr 30 (30 days)
// → Aug 01 → Aug 31 (31 days)
// → Dec 01 → Dec 31 (31 days)
Try it live
▶ Open in dotnetfiddle — Add the Vali-Range NuGet package in the fiddle settings.