Estou fazendo um programinha em que a pessoa faz um cadastro e coloca a data de nascimento o programa mostra que os dados foram cadastrados e mostra a idade da pessoa pegando a data inserida no formulario e a data do sistema para calculo, não sei se poderia usar date…A verdade é que não tenho a minima ideia de como fazer isso date ou calendar.e como fazer…
por exemplo a pessoa nasceu em 21/03/1970…e tem a data do sistema que posso conseguir pelo java.util.date queria fazer o calculo da idade da pessoa…
public class Exercicio
{
public static void main(String[] args)
{
Scanner leitor = new Scanner(System.in);
int mes, ano;
System.out.println("Digite o mês e o ano:");
mes = leitor.nextInt();
ano = leitor.nextInt();
switch(mes)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("O mês possui 31 dias.");
break;
case 2:
if ((ano % 4 == 0 && ano % 100 != 0) || (ano % 400 == 0))//Ano Bissexto
System.out.println("O mês possui 29 dias.");
else
System.out.println("O mês possui 28 dias.");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("O mês possui 30 dias.");
break;
default:
System.out.println("O mês deve estar entre 1 e 12.");
}
}
Boas, pessoal da elite debatendo é legal(rsss) mas ajudem este pobre mortal aqui…como faço isso???´so quero calcular a data do sujeito tendo por base a data do sisetma…não entrando com duas datas…
Estou fazendo um programinha em que a pessoa faz um cadastro e coloca a data de nascimento o programa mostra que os dados foram cadastrados e mostra a idade da pessoa pegando a data inserida no formulario e a data do sistema para calculo, não sei se poderia usar date…A verdade é que não tenho a minima ideia de como fazer isso date ou calendar.e como fazer…
por exemplo a pessoa nasceu em 21/03/1970…e tem a data do sistema que posso conseguir pelo java.util.date queria fazer o calculo da idade da pessoa…
[/quote]
Para fazer contas com datas tem que usar Calendar.
Dê uma olhada neste artigo sobre como trabalhar com datas
Veja o método daysBetween
converta para yearBewteen, em vez de calendar.add(Calendar.DATE, 1); faça calendar.add(Calendar.YEAR, 1);
public int idade(Date nascimento){
Date agora = new Date();
final int idade = DateUtils.yearBetween (nascimento, agora);
return idade;
}
Tenha atenção que isso calcula os anos da pessoa que ela irá fazer naquele ano. Se a data ainda não chegou a pessoa tem um ano menos.
Coloca isso na tua classe, se vc quiser saber a idade baseada apenas no ano de nascimento.
A classe java.util.Date está fora de uso. Ao invés, use java.util.Calendar
/**
* Calcula a idade a partir do ano de nascimento.
* @param anoDeNascimento ano de nascimento que será utilizado para calcular
* a idade.
* @return A idade da pessoa. Caso o valor informado seja inválido, retorna
* uma flag com o valor "-1".
*/
private final Integer calcularIdade(Integer anoDeNascimento) {
//armazena o ano atual no formato AAAA, ano com quatro dígitos.
Integer anoCorrente = Calendar.getInstance().get(Calendar.YEAR);
//se o ano de nascimento não for maior que o ano atual ou menor que 1900...
if (!((anoDeNascimento > anoCorrente) | anoDeNascimento < 1900)) {
//armazena o ano de nascimento na classe, para posterior cálculo.
this.anoDeNascimento = anoDeNascimento;
//
Integer idade = anoCorrente - anoDeNascimento;
return idade;
}else {
return -1;
}
}
Peguei sua dúvida e fiz essa classe abaixo…
Espero que seja útil e que não tenha feito nenhuma besteira… hehehehe
Aquela exceção que o método lança é só pra fazer a vida de programador mais feliz… não reparem… hehehehe
Abraço!
import java.util.Calendar;
import java.util.Date;
public class TesteDatas {
public static void main(String[] args) throws Exception {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 24);
calendar.set(Calendar.MONTH, 2);
calendar.set(Calendar.YEAR, 1988);
System.out.println(calculaDataNascimento(calendar.getTime()));
System.out.println(calculaDataNascimento(new Date()));
}
public static int calculaDataNascimento(Date dataNascimento) throws Exception {
Calendar calHoje = Calendar.getInstance();
Calendar calNascimento = Calendar.getInstance();
calNascimento.setTime(dataNascimento);
if (calNascimento.after(calHoje)) {
throw new Exception("Você veio do futuro?");
} else {
int anoNascimento = calNascimento.get(Calendar.YEAR);
int anoAtual = calHoje.get(Calendar.YEAR);
calNascimento.set(Calendar.YEAR, anoAtual);
// Já fez aniversário?
if (calNascimento.getTimeInMillis() >= calHoje.getTimeInMillis()) {
return anoAtual - anoNascimento;
} else {
return anoAtual - anoNascimento - 1;
}
}
}
}