Calcular Idade C# (CSharp), diferença anos entre duas datas

Autor : Antonio Carlos Ferreira de Azevedo
Postado em : 05/12/2019


Função para calcular diferença em anos, (idade) entre duas datas, você deve informar o primeiro parâmetro data, já o segundo paramento now utilizado para a para comparação pode ser suprimido, quando isto acontecer é atribuída a data atual a este parâmetro.
Lembrando é claro que esta função deve estar dentro de uma classe também publica e estática, public static class [suaclasse].


Função para calcular Idade (YearsOld)

     /*

     Autor: Antonio Azevedo
     Visite: www.codigoexpresso.com.br  
     Descrição: calculo Idade
                Calcula quantidade de anos entre duas datas (Idade)
    */

    /// <summary>
    /// Calcula quantidade de anos passdos com base em duas datas, caso encontre qualquer problema retorna 0 
    /// </summary>
    /// <param name="data">Data inicial</param>
    /// <param name="now">Data final ou deixar nula para data atual</param>
    /// <returns>Retorna inteiro com quantiadde de anos</returns>
    public static int YearsOld(DateTime data, DateTime? now = null)
    {
        // Carrega a data do dia para comparação caso data informada seja nula

        now = ((now == null) ? DateTime.Now : now);

        try
        {
            int YearsOld = (now.Value.Year - data.Year);

            if (now.Value.Month < data.Month || (now.Value.Month == data.Month && now.Value.Day < data.Day))
            {
                YearsOld--;
            }

            return (YearsOld < 0) ? 0 : YearsOld;
        }
        catch
        {
            return 0;
        }
    }


Exemplo de uso

// Definindo o primeiro parametro como 15/10/2010 
DateTime data = new DateTime(day: 15, month: 10, year: 2010);

// Exibindo o resultado comparando com data atual, no caso 05/12/2019
Console.WriteLine("Quantidade Anos: " + Funcoes.YearsOld(data).ToString());
Resultado => Quantidade Anos: 9

// Definindo uma segunda data como data final, faltando 1 mês para  completar 2 anos
DateTime dataFinal = new DateTime(day: 14, month: 10, year: 2012);
Console.WriteLine("Quantidade Anos: " + Funcoes.YearsOld(data, dataFinal).ToString());
Resultado => Quantidade Anos: 1


Você pode encontrar também as mesmas funções, mas para uso como extensões de métodos, ao implementar estes métodos estas funções passam a ficar disponíveis quando da utilização do método, deixando mais pratico sua utilização.

Segue funções para utilização como métodos de extensão para calculo de idade.

     /*

     Autor: Antonio Azevedo
     Visite: www.codigoexpresso.com.br  
     Descrição: calculo Idade
                Calcula quantidade de anos entre duas datas (Idade)
    */

    /// <summary>
    /// Calcula a diferenca em anos de duas datas, ou seja, a idade
    /// </summary>
    /// <param name="data">data mais antiga</param>
    /// <param name="now">data mais recente ou deixar nula para calcular com data do dia</param>
    /// <returns>um inteiro com a diferença de anos entre as duas datas, qualquer problema encontrado retornamos 0</returns>
    public static int YearsOld(this DateTime data, DateTime? now)
    {
        // Carrega a data do dia para comparação caso data informada seja nula

        now = ((now == null) ? DateTime.Now : now);

        try
        {
            int YearsOld = (now.Value.Year - data.Year);

            if (now.Value.Month < data.Month || (now.Value.Month == data.Month && now.Value.Day < data.Day))
            {
                YearsOld--;
            }

            return (YearsOld < 0) ? 0 : YearsOld;
        }
        catch
        {
            return 0;
        }
    }

    /// <summary>
    /// Este metodo complementa o metodo acima para datas nulas
    /// </summary>   
    public static int YearsOld(this DateTime? data, DateTime? now)
    {
        return ((data == null) ? 0 : YearsOld(data, now));
    }


Exemplo de uso das extensões de métodos

// Definindo o primeiro parametro como 15/10/2010 
DateTime data = new DateTime(day: 15, month: 10, year: 2010);
Console.WriteLine("Quantidade Anos: " + data.YearsOld().ToString());
Resultado => Quantidade Anos: 9

// Definindo uma segunda data como data final, faltando 1 mês para  completar 2 anos
DateTime dataFinal = new DateTime(day: 14, month: 10, year: 2012);
Console.WriteLine("Quantidade Anos: " + data.YearsOld(dataFinal).ToString());
Resultado => Quantidade Anos: 1


Utilize nossa Classe com todos os métodos de extensão disponíveis, procuramos deixar sempre atualizada para você;



Não deixa de visitar e se inscrever em nosso Canal no YouTube, você aprende e ajuda a manter este site, Obrigado.



Links Relacionados



Comentários