Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 106 | espaco | 1 | package br.com.ec.controller.util; |
| 2 | |||
| 3 | import java.util.Calendar; |
||
| 4 | import java.util.Date; |
||
| 5 | |||
| 6 | public class IdadeUtil { |
||
| 7 | |||
| 8 | public static String calcularIdade(Date data) { |
||
| 9 | Integer anos = 0; |
||
| 10 | Integer meses = 0; |
||
| 11 | Integer dias = 0; |
||
| 12 | Calendar dataAtual; |
||
| 13 | Calendar dataNascimento; |
||
| 14 | dataAtual = Calendar.getInstance(); |
||
| 15 | dataNascimento = Calendar.getInstance(); |
||
| 16 | dataNascimento.setTime(data); |
||
| 17 | anos = anos + (dataAtual.get(Calendar.YEAR) - dataNascimento.get(Calendar.YEAR)); |
||
| 18 | meses = meses + (dataAtual.get(Calendar.MONTH) - dataNascimento.get(Calendar.MONTH)); |
||
| 19 | dias = dias + (dataAtual.get(Calendar.DAY_OF_MONTH) - dataNascimento.get(Calendar.DAY_OF_MONTH)); |
||
| 20 | if (dataAtual.get(Calendar.MONTH) == dataNascimento.get(Calendar.MONTH)) { |
||
| 21 | if (dataAtual.get(Calendar.DAY_OF_MONTH) < dataNascimento.get(Calendar.DAY_OF_MONTH)) { |
||
| 22 | dias = 30 + dias; |
||
| 23 | meses = 12 + meses; |
||
| 24 | anos = anos - 1; |
||
| 25 | } |
||
| 26 | } else if (dataAtual.get(Calendar.MONTH) < dataNascimento.get(Calendar.MONTH)) { |
||
| 27 | if (dataAtual.get(Calendar.DAY_OF_MONTH) >= dataNascimento.get(Calendar.DAY_OF_MONTH)) { |
||
| 28 | meses = 12 + meses; |
||
| 29 | anos = anos - 1; |
||
| 30 | } else if (dataAtual.get(Calendar.DAY_OF_MONTH) < dataNascimento.get(Calendar.DAY_OF_MONTH)) { |
||
| 31 | dias = 30 + dias; |
||
| 32 | meses = 12 + meses; |
||
| 33 | anos = anos - 1; |
||
| 34 | } |
||
| 35 | } else if (dataAtual.get(Calendar.MONTH) > dataNascimento.get(Calendar.MONTH)) { |
||
| 36 | if (dataAtual.get(Calendar.DAY_OF_MONTH) < dataNascimento.get(Calendar.DAY_OF_MONTH)) { |
||
| 37 | dias = 30 + dias; |
||
| 38 | meses = meses - 1; |
||
| 39 | } |
||
| 40 | } |
||
| 41 | |||
| 42 | return formatarIdade(formatar(anos, meses, dias)); |
||
| 43 | } |
||
| 44 | |||
| 45 | public static String calcularIdadeSimplificada(Date data) { |
||
| 46 | Integer anos = 0; |
||
| 47 | Integer meses = 0; |
||
| 48 | Integer dias = 0; |
||
| 49 | Calendar dataAtual; |
||
| 50 | Calendar dataNascimento; |
||
| 51 | dataAtual = Calendar.getInstance(); |
||
| 52 | dataNascimento = Calendar.getInstance(); |
||
| 53 | dataNascimento.setTime(data); |
||
| 54 | anos = anos + (dataAtual.get(Calendar.YEAR) - dataNascimento.get(Calendar.YEAR)); |
||
| 55 | meses = meses + (dataAtual.get(Calendar.MONTH) - dataNascimento.get(Calendar.MONTH)); |
||
| 56 | dias = dias + (dataAtual.get(Calendar.DAY_OF_MONTH) - dataNascimento.get(Calendar.DAY_OF_MONTH)); |
||
| 57 | if (dataAtual.get(Calendar.MONTH) == dataNascimento.get(Calendar.MONTH)) { |
||
| 58 | if (dataAtual.get(Calendar.DAY_OF_MONTH) < dataNascimento.get(Calendar.DAY_OF_MONTH)) { |
||
| 59 | dias = 30 + dias; |
||
| 60 | meses = 12 + meses; |
||
| 61 | anos = anos - 1; |
||
| 62 | } |
||
| 63 | } else if (dataAtual.get(Calendar.MONTH) < dataNascimento.get(Calendar.MONTH)) { |
||
| 64 | if (dataAtual.get(Calendar.DAY_OF_MONTH) >= dataNascimento.get(Calendar.DAY_OF_MONTH)) { |
||
| 65 | meses = 12 + meses; |
||
| 66 | anos = anos - 1; |
||
| 67 | } else if (dataAtual.get(Calendar.DAY_OF_MONTH) < dataNascimento.get(Calendar.DAY_OF_MONTH)) { |
||
| 68 | dias = 30 + dias; |
||
| 69 | meses = 12 + meses; |
||
| 70 | anos = anos - 1; |
||
| 71 | } |
||
| 72 | } else if (dataAtual.get(Calendar.MONTH) > dataNascimento.get(Calendar.MONTH)) { |
||
| 73 | if (dataAtual.get(Calendar.DAY_OF_MONTH) < dataNascimento.get(Calendar.DAY_OF_MONTH)) { |
||
| 74 | dias = 30 + dias; |
||
| 75 | meses = meses - 1; |
||
| 76 | } |
||
| 77 | } |
||
| 78 | |||
| 79 | return formatarIdadeSimplificada(formatar(anos, meses, dias)); |
||
| 80 | } |
||
| 81 | |||
| 82 | /** Método responsável por formatar uma idade no formato 1 10 6. |
||
| 83 | * Concatena-se 0 se o valor menor que 10 e logo apos o numero adicionasse espaço. |
||
| 84 | * |
||
| 85 | * @return Data formatada para o formato 00 00 00. |
||
| 86 | */ |
||
| 87 | private static String formatar(Integer ano, Integer mes, Integer dia) { |
||
| 88 | String idade = ""; |
||
| 89 | if (ano.intValue() < 10) { |
||
| 90 | idade = (new StringBuilder()).append(idade).append("0").append(ano).append(" ").toString(); |
||
| 91 | } else { |
||
| 92 | idade = (new StringBuilder()).append(idade).append(ano).append(" ").toString(); |
||
| 93 | } |
||
| 94 | if (mes.intValue() < 10) { |
||
| 95 | idade = (new StringBuilder()).append(idade).append("0").append(mes).append(" ").toString(); |
||
| 96 | } else { |
||
| 97 | idade = (new StringBuilder()).append(idade).append(mes).append(" ").toString(); |
||
| 98 | } |
||
| 99 | if (dia.intValue() < 10) { |
||
| 100 | idade = (new StringBuilder()).append(idade).append("0").append(dia).append(" ").toString(); |
||
| 101 | } else { |
||
| 102 | idade = (new StringBuilder()).append(idade).append(dia).append(" ").toString(); |
||
| 103 | } |
||
| 104 | return idade; |
||
| 105 | } |
||
| 106 | |||
| 107 | /** Pega os valores 00 00 00 e coloca Ano(s) Mes(es) Dia(s) |
||
| 108 | */ |
||
| 109 | private static String formatarIdade(String ida) { |
||
| 110 | String idade = ""; |
||
| 111 | String anos = null; |
||
| 112 | String meses = null; |
||
| 113 | String dias = null; |
||
| 114 | String CharArray[] = ida.split(" "); |
||
| 115 | anos = CharArray[0]; |
||
| 116 | meses = CharArray[1]; |
||
| 117 | dias = CharArray[2]; |
||
| 118 | if (!anos.equals("00")) { |
||
| 119 | if (anos.equals("01")) { |
||
| 120 | idade = idade.concat((new StringBuilder()).append(anos).append(" Ano ").toString()); |
||
| 121 | } else { |
||
| 122 | idade = idade.concat((new StringBuilder()).append(anos).append(" Anos ").toString()); |
||
| 123 | } |
||
| 124 | } |
||
| 125 | |||
| 126 | if (!meses.equals("00")) { |
||
| 127 | if (meses.equals("01")) { |
||
| 128 | idade = idade.concat((new StringBuilder()).append(meses).append(" Mês ").toString()); |
||
| 129 | } else { |
||
| 130 | idade = idade.concat((new StringBuilder()).append(meses).append(" Meses ").toString()); |
||
| 131 | } |
||
| 132 | } |
||
| 133 | if (!dias.equals("00")) { |
||
| 134 | if (dias.equals("01")) { |
||
| 135 | idade = idade.concat((new StringBuilder()).append(dias).append(" Dia ").toString()); |
||
| 136 | } else { |
||
| 137 | idade = idade.concat((new StringBuilder()).append(dias).append(" Dias").toString()); |
||
| 138 | } |
||
| 139 | } |
||
| 140 | |||
| 141 | return idade; |
||
| 142 | } |
||
| 143 | |||
| 144 | private static String formatarIdadeSimplificada(String ida) { |
||
| 145 | String idade = ""; |
||
| 146 | String anos = null; |
||
| 147 | String CharArray[] = ida.split(" "); |
||
| 148 | anos = CharArray[0]; |
||
| 149 | if (!anos.equals("00")) { |
||
| 150 | if (anos.equals("01")) { |
||
| 151 | idade = idade.concat((new StringBuilder()).append(anos).append(" Ano ").toString()); |
||
| 152 | } else { |
||
| 153 | idade = idade.concat((new StringBuilder()).append(anos).append(" Anos ").toString()); |
||
| 154 | } |
||
| 155 | } |
||
| 156 | return idade; |
||
| 157 | } |
||
| 158 | } |