Puede hacer esto en Noda Time con bastante facilidad:
using System;
using NodaTime;
class Test
{
static void Main()
{
ShowAge(1988, 9, 6);
ShowAge(1991, 3, 31);
ShowAge(1991, 2, 25);
}
private static readonly PeriodType YearMonth =
PeriodType.YearMonthDay.WithDaysRemoved();
static void ShowAge(int year, int month, int day)
{
var birthday = new LocalDate(year, month, day);
// For consistency for future readers :)
var today = new LocalDate(2012, 2, 3);
Period period = Period.Between(birthday, today, YearMonth);
Console.WriteLine("Birthday: {0}; Age: {1} years, {2} months",
birthday, period.Years, period.Months);
}
}
hacerlo con solo DateTime
apoyo de .NET sería posible, pero que tendría que hacer lo mismo aritmética, básicamente. Y es casi seguro que no sería tan claro. No es que yo soy parcial o nada :)
hicieron marcó TimeSpan estructura ??? –
@ Ravi: ¿Pensaste si eso puede determinar con precisión el número de meses y años entre dos fechas? –
no, se pensó en sugerir NodaTime, pero cuando "daemon" está activo en SO, entonces ¿por qué preocuparse, se le ocurrirá por ejemplo :) –