Skip to main content
38+ countries · 45+ IANA zones · .NET 8/9/10

Vali-Tempo

// time precision for .NET — dates, calendars & timezones

Eleven modules. One ecosystem. Precision time.

ValiTimeValiDateValiRangeValiCalendarValiDurationValiCountDownValiAgeValiScheduleValiHolidayValiTimeZoneValiBusinessHoursValiBucketValiTimeValiDateValiRangeValiCalendarValiDurationValiCountDownValiAgeValiScheduleValiHolidayValiTimeZoneValiBusinessHoursValiBucket
11modules
38+countries
.NET 8/9/10supported
$dotnet add package Vali-Tempo

Everything you need for precise time handling

Built for .NET developers who need accurate date, time, and timezone operations.

01

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.

02

Vali-Date

Full date arithmetic — diff, add, subtract, startOf, endOf, isWeekend, isLeapYear, weekOfYear, dayOfYear, progress in year/month and quarter operations.

03

Vali-Range

Expressive date range operations: union, intersection, gaps, split by day/week/month/quarter. Enumerate workdays, expand, shrink, shift and merge ranges fluently.

04

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.

05

Vali-Duration

High-precision decimal Duration value type. Factory methods from milliseconds to years, full arithmetic operators, TimeSpan interop, formatting and unit conversion.

06

Vali-CountDown

Deadline tracking and countdown utilities. Measure time until/since a reference point, report progress as a percentage, and format a human-readable breakdown.

07

Vali-Age

Age calculation from a birthdate. Get years, exact breakdown, formatted strings, relative descriptions, birthday detection, next/previous birthday and days until birthday.

08

Vali-Schedule

Fluent builder for recurring schedules — daily, weekly, monthly, yearly, plus a Cron engine. Query next/previous occurrences, enumerate occurrences in a range, and skip weekends/holidays.

09

Vali-Holiday

38+ country holiday data with Easter-based movable holidays. Register providers, check if a date is a holiday in one or more countries, get next/previous holidays and observed dates.

10

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.

11

Vali-BusinessHours

Cross-timezone business-hours overlap, DST-correct and midnight-crossing aware. Find overlapping windows between two offices and restrict them to workdays.

12

Vali-Bucket

Fixed-size, anchor-aligned time-series bucketing and aggregation. Group events into buckets and aggregate values — sum, average, min, max, count.

precision ecosystem

Eleven modules. One time ecosystem.

Eleven focused packages. Use one or all — they compose naturally.

--:--:--
ValiTimeZone.Now("local")
Vali-TimeZone
Now("America/Lima")
--:--:--
Vali-Holiday
IsHoliday(Today, "US")
—
Vali-Time
Convert(90, Min, Hours)
"1.50 h"
Vali-Range
Intersect(rangeA, rangeB)
3 overlapping days
Vali-Calendar
WorkdaysIn(30d)
~22 workdays
Vali-Duration
From(TimeSpan.FromHours(2))
"2h 0m 0s"
Vali-Schedule
Every(1,Week).On(Mon)
next: —
Vali-Age
Years(Jan 15, 1993)
33 years
Vali-CountDown
TimeUntil(NewYear)
0d remaining
Program.cs
12345678910111213
builder.Services.AddValiTempo();
// Inject what you need
public 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;
}

12 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-Time

Date range operations — union, intersection, gaps, split, enumerate workdays.

dotnet add package Vali-Range

Workday calendar engine with pluggable holiday provider support.

dotnet add package Vali-Calendar

High-precision decimal Duration value type with full arithmetic operators.

dotnet add package Vali-Duration

Deadline tracking, countdown utilities, progress and breakdown.

dotnet add package Vali-CountDown

Age calculation from birthdate. AgeResult struct with years, months, days.

dotnet add package Vali-Age

Fluent builder for recurring schedules — daily, weekly, monthly, yearly.

dotnet add package Vali-Schedule

35+ country holiday data with Easter-based movable holidays and IHolidayProvider.

dotnet add package Vali-Holiday

45+ curated IANA timezone zones with DST support and offset computation.

dotnet add package Vali-TimeZone

Cross-timezone business-hours overlap, DST-correct and midnight-crossing aware.

dotnet add package Vali-BusinessHours

Fixed-size, anchor-aligned time-series bucketing and aggregation.

dotnet add package Vali-Bucket

Meta-package that includes all 11 modules. One install, one AddValiTempo() call.

dotnet add package Vali-Tempo
FM

Built by

Felipe Montenegro

.NET developer and open-source contributor. Also the author of Vali-Blob.