Java Date Calculate calculaIdadeEmMeses(Date dDataNasc)

Here you can find the source of calculaIdadeEmMeses(Date dDataNasc)

Description

Faz o calculo da idade com base na data passada como parametro.

License

Open Source License

Parameter

Parameter Description
dDataNasc a parameter

Declaration

public static Integer calculaIdadeEmMeses(Date dDataNasc) 

Method Source Code

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

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

public class Main {
    /**/* w ww.  j  a v  a  2 s . c  om*/
     * Faz o calculo da idade com base na data passada como parametro. retorna apenas os meses retorna um numero representando a quantidade de meses.
     * 
     * @param dDataNasc
     * @return
     */
    public static Integer calculaIdadeEmMeses(Date dDataNasc) {
        if (dDataNasc == null) {
            return new Integer(0);
        }

        int anoResult = 0;
        int mesResult = 0;
        Calendar hoje = Calendar.getInstance();
        Date now = hoje.getTime();

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

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

        mesResult = mesHoje - mesDataParm;
        if ((mesResult < 0) || ((mesHoje == mesDataParm) && (diaHoje < diaDataParm))) {
            mesResult = mesResult + 12;
        }

        if (anoResult > 0) {
            if (anoResult == 1) {
                return new Integer((1 * 12) + mesResult);
            } else {
                return new Integer((anoResult * 12) + mesResult);
            }
        } else {
            return new Integer(mesResult);
        }
    }

    public static Integer calculaIdadeEmMeses(Date dDataNasc, Date dataRef) {
        if (dDataNasc == null) {
            return new Integer(0);
        }
        if (dataRef == null) {
            return new Integer(0);
        }

        int anoResult = 0;
        int mesResult = 0;
        Date dataReferencia = dataRef;

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

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

        mesResult = mesHoje - mesDataParm;
        if ((mesResult < 0) || ((mesHoje == mesDataParm) && (diaHoje < diaDataParm))) {
            mesResult = mesResult + 12;
        }

        if (anoResult > 0) {
            if (anoResult == 1) {
                return new Integer((1 * 12) + mesResult);
            } else {
                return new Integer((anoResult * 12) + mesResult);
            }
        } else {
            return new Integer(mesResult);
        }
    }

    /**
     * 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. after(Date dt, Date dt2)
  2. before(Date dt, Date dt2)
  3. before(final Date date, final long compareTime)
  4. calculaDataTermino(Date dataInicio, int prazo)
  5. calculaIdadeEmAnos(Date dDataNasc, Date dataRef)
  6. calculaIdadeMesAno(Date dDataNasc, String type)
  7. calculate(Date d, int field, int amount)
  8. calculateByDate(Date d, int amount)
  9. calculateDate(Date date, int field, int value)