Java Date Calculate calculaIdadeMesAno(Date dDataNasc, String type)

Here you can find the source of calculaIdadeMesAno(Date dDataNasc, String type)

Description

Faz o calculo da idade com base na data passada como parametro (retorna apenas mes e ano)

License

Open Source License

Parameter

Parameter Description
dDataNasc a parameter
type - pode ser "SHORT" ou "LONG" (para determinar se saira: "19a 13m" ou "19 anos 13 meses"

Return

Retorna apenas mes e ano

Declaration

public static String calculaIdadeMesAno(Date dDataNasc, String type) 

Method Source Code

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

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

public class Main {
    /**/*w w w.  j  a va  2  s .c  o  m*/
     * Faz o calculo da idade com base na data passada como parametro (retorna apenas mes e ano)
     * 
     * @param dDataNasc
     * @param type
     *            - pode ser "SHORT" ou "LONG" (para determinar se saira: "19a 13m" ou "19 anos 13 meses"
     * @return Retorna apenas mes e ano
     */
    public static String calculaIdadeMesAno(Date dDataNasc, String type) {
        if (dDataNasc == null) {
            return "";
        }

        int anoResult = 0;
        int mesResult = 0;
        int diaResult = 0;
        Calendar hoje = Calendar.getInstance();
        Date now = hoje.getTime();
        String retorno = "";
        String strAno;
        String strAnos;
        String strMes;
        String strMeses;

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

        if ("SHORT".equalsIgnoreCase(type)) {
            strAno = strAnos = "a";
            strMes = strMeses = "m";
        } else {
            strAno = " ano";
            strAnos = " anos";
            strMes = " mes";
            strMeses = " meses";
        }

        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;
        }

        diaResult = (diaHoje - diaDataParm);
        if (diaResult < 0) {
            mesResult = mesResult - 1;
            diaResult = 30 + diaResult;
        }

        retorno = "";
        if (anoResult > 0) {
            if (anoResult == 1) {
                retorno = "1" + strAno + " ";
            } else {
                retorno = String.valueOf(anoResult) + strAnos + " ";
            }
        }

        if (mesResult > 0) {
            if (mesResult == 1) {
                retorno = retorno + "1" + strMes + " ";
            } else {
                retorno = retorno + String.valueOf(mesResult) + strMeses + " ";
            }
        }

        return retorno;
    }

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