Everything you need for precise time handling
Built for .NET developers who need accurate date, time, and timezone operations.
Vali-Time
High-precision time unit conversions with decimal accuracy. Convert between milliseconds, seconds, minutes, hours, days and more. Format, clamp, compare and break down durations.
Vali-Date
Full date arithmetic — diff, add, subtract, startOf, endOf, isWeekend, isLeapYear, weekOfYear, dayOfYear, progress in year/month and quarter operations.
Vali-Range
Expressive date range operations: union, intersection, gaps, split by day/week/month/quarter. Enumerate workdays, expand, shrink, shift and merge ranges fluently.
Vali-Calendar
Workday calendar with pluggable holiday provider support. Calculate workdays between dates, add workdays, query weeks and months, and detect first/last day boundaries.
Vali-Duration
High-precision decimal Duration value type. Factory methods from milliseconds to years, full arithmetic operators, TimeSpan interop, formatting and unit conversion.
Vali-Age
Age calculation from a birthdate. Get years, exact breakdown, formatted strings, relative descriptions, birthday detection, next/previous birthday and days until birthday.
Vali-Schedule
Fluent builder for recurring schedules — daily, weekly, monthly, yearly. Query next/previous occurrences, enumerate occurrences in a range, and use custom predicates.
Vali-Holiday
35+ country holiday data with Easter-based movable holidays. Register providers, check if a date is a holiday, get next/previous holidays and detect long weekends.
Vali-TimeZone
45+ curated IANA timezone zones. Convert between zones, handle DST, compute offset differences, find zones by country, format with zone info and compare instants.
Nine modules. One time ecosystem.
Nine focused packages. Use one or all — they compose naturally.
Now("America/Lima")IsHoliday(Today, "US")Convert(90, Min, Hours)Intersect(rangeA, rangeB)WorkdaysIn(30d)From(TimeSpan.FromHours(2))Every(1,Week).On(Mon)Years(Jan 15, 1993)TimeUntil(NewYear)builder.Services.AddValiTempo();// Inject what you needpublic class ScheduleService( IValiTime time, IValiDate date, IValiHoliday holiday, IValiTimeZone tz) { public bool IsBusinessHour(string zone) => !holiday.IsHoliday(DateTime.Today, "PE") && time.Convert(9, TimeUnit.Hours, TimeUnit.Minutes) <= tz.Now(zone).TimeOfDay.TotalMinutes;}10 NuGet packages. Install only what you need.
Each package is independent — add the modules your project requires, or grab Vali-Tempo for the full suite.
Time unit conversions with decimal precision. ValiTime + ValiDate classes.
dotnet add package Vali-TimeDate range operations — union, intersection, gaps, split, enumerate workdays.
dotnet add package Vali-RangeWorkday calendar engine with pluggable holiday provider support.
dotnet add package Vali-CalendarHigh-precision decimal Duration value type with full arithmetic operators.
dotnet add package Vali-DurationDeadline tracking, countdown utilities, progress and breakdown.
dotnet add package Vali-CountDownAge calculation from birthdate. AgeResult struct with years, months, days.
dotnet add package Vali-AgeFluent builder for recurring schedules — daily, weekly, monthly, yearly.
dotnet add package Vali-Schedule35+ country holiday data with Easter-based movable holidays and IHolidayProvider.
dotnet add package Vali-Holiday45+ curated IANA timezone zones with DST support and offset computation.
dotnet add package Vali-TimeZoneMeta-package that includes all 9 modules. One install, one AddValiTempo() call.
dotnet add package Vali-Tempo