Ir al contenido principal

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
Pruébalo en vivo

▶ 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
Pruébalo en vivo

▶ 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
Pruébalo en vivo

▶ 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
Pruébalo en vivo

▶ Abrir en dotnetfiddle — Agrega el paquete NuGet Vali-Age en la configuración del fiddle.