Testes com Date/Calendar

4 respostas
C

Pessoal estou fazendo alguns testes com Date e Calendar, e me deparei com um probleminha
preciso por exemplo checar se o usuário tem mais de 18 anos, no caso ele já entrou a data, meu problema é só como fazer esse check (Utilizando os dias também!) ! tipo, se o cara nasceu em 1994 passa, mas se em 1999 não.

Outra coisa, é como comparar as datas, preciso passar um método apenas se a data de registro da operação, for não menos que 24hrs antes da data solicitada (como reservas em hotel)

Espero que tenha ficado claro.

Obrigado pela atenção.

4 Respostas

erico_kl

Cara, se você está querendo evoluir no que diz respeito a cálculos com data, recomendo nem perder tempo com Date/Calendar e utilizar a biblioteca JodaTime, pelo que sei no Java 8 (ou 9, não tenho certeza) ela vai ser default.

Da pra fazer com Calendar? Sim, mas você vai ter problemas com cálculos de dias e o trabalho vai ser mais braçal e menos OO.

drsmachado

Tanto Date quanto Calendar possuem métodos que convertem a data especificada em um número que pode ser armazenado em um long.
Isso nos possibilita o seguinte.

public boolean maisQue18(Date dtNasc){
    Date dtAtual = new Date();
    long lDtAtual = dtAtual.getTime();
    long lDtNasc = dtNasc.getTime();
    long lIdade = (lDtAtual - lDtNasc);
 
   long segundos = lIdade / 1000;// o método getTime retorna o total de milissegundos de uma data
   long minutos = segundos/60;
   long horas = minutos/60;
   long dias = horas / 24;
   long anos = dias/365;
   return anos >= 18 ? true : false;
}

Assim você já descobre a diferença entre datas.
Entre dias, basta fazer o mesmo cálculo.

Ah, claro que existem formas mais adequadas, como o JodaTime.

C

Hm, obrigado, darei uma pesquisada em JodaTime, mas por enquanto creio que os métodos com long possam me ajudar.
assim que testar o novo algoritmo eu retorno aqui. Até breve.

C

tudo certo (: Obrigado.
agora estudarei esse JodaTime.
Tks.

Criado 29 de janeiro de 2013
Ultima resposta 29 de jan. de 2013
Respostas 4
Participantes 3