public static void Main()
var dataNascimento = new DateTime(2017,8,18);
var dataReferencia = new DateTime(2022,3,1);
ConverterIdadeEmMesesPorExtenso(
public static int CalcularIdadeEmMeses(DateTime dataNascimento, DateTime dataReferencia)
int anos = new DateTime(dataReferencia.Subtract(dataNascimento).Ticks).Year - 1;
var AnosTranscorridos = dataNascimento.AddYears(anos);
for (int i = 1; i <= 12; i++)
if (AnosTranscorridos.AddMonths(i) == dataReferencia)
else if (AnosTranscorridos.AddMonths(i) >= dataReferencia)
return (anos * 12) + meses;
public static string ConverterIdadeEmMesesPorExtenso(int totalMeses)
Func<int, bool, string> tempoParaTexto = delegate (int tempo, bool ehAno)
else if (ehAno && tempo == 1)
else if (!ehAno && tempo == 1)
var anos = totalMeses / 12;
var meses = totalMeses % 12;
return $"{meses} {tempoParaTexto(meses, false)}";
return $"{anos} {tempoParaTexto(anos, true)}";
return $"{anos} {tempoParaTexto(anos, true)} e {meses} {tempoParaTexto(meses, false)}";