Java Date Calculate calculaIdadeEmAnos(Date dDataNasc, Date dataRef)

Here you can find the source of calculaIdadeEmAnos(Date dDataNasc, Date dataRef)

Description

Faz o calculo da idade com base na data passada como parametro e a data de referencia.

License

Open Source License

Parameter

Parameter Description
dDataNasc - Data de Nascimento
dataRef - Data de referencia para calculo da idade.

Declaration

public static Integer calculaIdadeEmAnos(Date dDataNasc, Date dataRef) 

Method Source Code

//package com.java2s;
//License from project: Open Source License 

import java.util.Calendar;
import java.util.Date;

public class Main {
    /**/*from   ww w .  jav  a2s  .co  m*/
     * Faz o calculo da idade com base na data passada como parametro e a data de referencia. retorna apenas os anos retorna um numero representando a quantidade de anos.
     * 
     * @param dDataNasc
     *            - Data de Nascimento
     * @param dataRef
     *            - Data de referencia para calculo da idade.
     * @return
     */
    public static Integer calculaIdadeEmAnos(Date dDataNasc, Date dataRef) {
        if (dDataNasc == null) {
            return new Integer(0);
        }
        if (dataRef == null) {
            return new Integer(0);
        }

        int anoResult = 0;

        int anoHoje = getYear(dataRef);
        int anoDataParm = getYear(dDataNasc);
        int mesHoje = getMonth(dataRef);
        int mesDataParm = getMonth(dDataNasc);
        int diaHoje = getDay(dataRef);
        int diaDataParm = getDay(dDataNasc);

        anoResult = anoHoje - anoDataParm;
        if ((mesHoje < mesDataParm) || ((mesHoje == mesDataParm) && (diaHoje < diaDataParm))) {
            anoResult = anoResult - 1;
        }

        if (anoResult > 0) {
            if (anoResult == 1) {
                return new Integer(1);
            } else {
                return new Integer(anoResult);
            }
        }

        return new Integer(0);
    }

    /**
     * Faz o calculo da idade com base na data passada como parametro. retorna apenas os anos retorna um numero representando a quantidade de anos.
     * 
     * @param dDataNasc
     * @return
     */
    public static Integer calculaIdadeEmAnos(Date dDataNasc) {
        if (dDataNasc == null) {
            return new Integer(0);
        }

        Calendar hoje = Calendar.getInstance();
        Date now = hoje.getTime();

        return calculaIdadeEmAnos(dDataNasc, now);
    }

    /**
     * Pega o ano de uma data
     * 
     * @param data
     * @return
     */
    public static int getYear(Date data) {
        Calendar c = Calendar.getInstance();

        c.setTime(data);

        return c.get(Calendar.YEAR);
    }

    /**
     * Pega o mes de uma data
     * 
     * @param data
     * @return
     */
    public static int getMonth(Date data) {
        Calendar c = Calendar.getInstance();

        c.setTime(data);

        return c.get(Calendar.MONTH) + 1;
    }

    /**
     * Pega o dia de uma data
     * 
     * @param data
     * @return
     */
    public static int getDay(Date data) {
        Calendar c = Calendar.getInstance();

        c.setTime(data);

        return c.get(Calendar.DAY_OF_MONTH);
    }
}

Related

  1. adjust(Date date, int h, int m, int s)
  2. after(Date dt, Date dt2)
  3. before(Date dt, Date dt2)
  4. before(final Date date, final long compareTime)
  5. calculaDataTermino(Date dataInicio, int prazo)
  6. calculaIdadeEmMeses(Date dDataNasc)
  7. calculaIdadeMesAno(Date dDataNasc, String type)
  8. calculate(Date d, int field, int amount)
  9. calculateByDate(Date d, int amount)