Vali-Age — Ejemplos
dotnet add package Vali-Age
Years + Exact — Calcular la edad exacta
Years devuelve el número de años completos transcurridos, mientras que Exact desglosa la edad en años, meses y días restantes.
using System;
using Vali_Age.Core;
var valiAge = new ValiAge();
var birthdate = new DateTime(1990, 3, 10);
var reference = new DateTime(2025, 6, 15);
int years = valiAge.Years(birthdate, referenceDate: reference);
AgeResult exact = valiAge.Exact(birthdate, referenceDate: reference);
Console.WriteLine($"Birthdate : {birthdate:MMMM dd, yyyy}");
Console.WriteLine($"Reference : {reference:MMMM dd, yyyy}");
Console.WriteLine();
Console.WriteLine($"Complete years : {years}");
Console.WriteLine($"Exact age : {exact.Years}y {exact.Months}m {exact.Days}d");
Console.WriteLine($"Total days : {exact.TotalDays:N0}");
Console.WriteLine($"Formatted : {valiAge.Format(birthdate, detailed: true, referenceDate: reference)}");
// Salida:
// Birthdate : March 10, 1990
// Reference : June 15, 2025
//
// Complete years : 35
// Exact age : 35y 3m 5d
// Total days : 12,880
// Formatted : 35 years, 3 months, and 5 days
▶ Abrir en dotnetfiddle — Agrega el paquete NuGet Vali-Age en la configuración del fiddle.
IsBirthday — Verificar si hoy es el cumpleaños de alguien
IsBirthday devuelve true cuando la fecha de referencia coincide con el mes y día del cumpleaños. La convención del 29 de febrero se aplica automáticamente para fechas de nacimiento en años bisiestos.
using System;
using Vali_Age.Core;
var valiAge = new ValiAge();
// Cumpleaños estándar
var standardBirthdate = new DateTime(1995, 6, 15);
var today = new DateTime(2025, 6, 15); // ¡cumpleaños!
var notToday = new DateTime(2025, 6, 16); // día siguiente
Console.WriteLine($"Standard birthday ({standardBirthdate:MMM dd})");
Console.WriteLine($" On Jun 15 : {valiAge.IsBirthday(standardBirthdate, referenceDate: today)}");
Console.WriteLine($" On Jun 16 : {valiAge.IsBirthday(standardBirthdate, referenceDate: notToday)}");
// Convención del 29 de febrero
var leapBirthdate = new DateTime(2000, 2, 29);
var leapYear = new DateTime(2024, 2, 29); // año bisiesto — día real
var nonLeapYear = new DateTime(2025, 2, 28); // año no bisiesto — se usa el 28 de feb
var wrongDay = new DateTime(2025, 3, 1); // ninguno de los dos
Console.WriteLine();
Console.WriteLine($"Leap-day birthday ({leapBirthdate:MMM dd, yyyy})");
Console.WriteLine($" Feb 29, 2024 (leap) : {valiAge.IsBirthday(leapBirthdate, referenceDate: leapYear)}");
Console.WriteLine($" Feb 28, 2025 (non-leap) : {valiAge.IsBirthday(leapBirthdate, referenceDate: nonLeapYear)}");
Console.WriteLine($" Mar 01, 2025 : {valiAge.IsBirthday(leapBirthdate, referenceDate: wrongDay)}");
// Salida:
// Standard birthday (Jun 15)
// On Jun 15 : True
// On Jun 16 : False
//
// Leap-day birthday (Feb 29, 2000)
// Feb 29, 2024 (leap) : True
// Feb 28, 2025 (non-leap) : True
// Mar 01, 2025 : False
▶ Abrir en dotnetfiddle — Agrega el paquete NuGet Vali-Age en la configuración del fiddle.
NextBirthday + DaysUntilBirthday — Planificar próximos cumpleaños
NextBirthday devuelve la fecha de la próxima ocurrencia del cumpleaños y DaysUntilBirthday indica cuántos días faltan.
using System;
using Vali_Age.Core;
var valiAge = new ValiAge();
var reference = new DateTime(2025, 6, 15);
var people = new (string Name, DateTime Birthdate)[]
{
("Alice", new DateTime(1992, 6, 20)), // cumpleaños en 5 días
("Bob", new DateTime(1985, 3, 8)), // cumpleaños ya pasó este año
("Charlie", new DateTime(2000, 2, 29)), // cumpleaños en día bisiesto
};
Console.WriteLine($"{"Name",-10} | {"Next Birthday",-15} | {"Days Away",9} | Formatted age");
Console.WriteLine(new string('-', 62));
foreach (var (name, birthdate) in people)
{
DateTime next = valiAge.NextBirthday(birthdate, referenceDate: reference);
int days = valiAge.DaysUntilBirthday(birthdate, referenceDate: reference);
string ageStr = valiAge.Format(birthdate, referenceDate: reference);
Console.WriteLine($"{name,-10} | {next:MMM dd, yyyy} | {days,9} | {ageStr}");
}
// Salida:
// Name | Next Birthday | Days Away | Formatted age
// --------------------------------------------------------------
// Alice | Jun 20, 2025 | 5 | 32 years old
// Bob | Mar 08, 2026 | 266 | 40 years old
// Charlie | Feb 28, 2026 | 258 | 25 years old
▶ Abrir en dotnetfiddle — Agrega el paquete NuGet Vali-Age en la configuración del fiddle.
Relative — Formatear la edad como descripción relativa
Relative devuelve una cadena amigable para humanos como "5 years ago" o "3 months ago" según qué tan atrás en el tiempo esté la fecha.
using System;
using Vali_Age.Core;
var valiAge = new ValiAge();
var reference = new DateTime(2025, 6, 15);
var birthdates = new (string Label, DateTime Date)[]
{
("Adult (born 1990)", new DateTime(1990, 1, 20)),
("Teen (born 2010)", new DateTime(2010, 9, 5)),
("Toddler (born 2023)", new DateTime(2023, 2, 28)),
("Infant (born May 2025)", new DateTime(2025, 5, 1)),
("Newborn (born Jun 2025)", new DateTime(2025, 6, 1)),
};
Console.WriteLine($"{"Label",-28} | Relative description");
Console.WriteLine(new string('-', 55));
foreach (var (label, date) in birthdates)
{
string rel = valiAge.Relative(date, referenceDate: reference);
Console.WriteLine($"{label,-28} | {rel}");
}
// Salida:
// Label | Relative description
// -------------------------------------------------------
// Adult (born 1990) | 35 years ago
// Teen (born 2010) | 14 years ago
// Toddler (born 2023) | 2 years ago
// Infant (born May 2025) | about 1 month ago
// Newborn (born Jun 2025) | 14 days ago
▶ Abrir en dotnetfiddle — Agrega el paquete NuGet Vali-Age en la configuración del fiddle.