Idade

Amigos, fiz um programa simples para saber a idade da pessoa utilizando Java Swing. Preciso mudar o codigo abaixo para substituir “2017” pelo ano vindo do sistema; não sei como formatar “Date”. Se puderem me ajudar ficarei muito grato.

Date relogio = new Date();
System.out.println(relogio);

    int an = Integer.parseInt(txtAN.getValue().toString());
    int id = 2017 - an;
    lblIdade.setText(Integer.toString(id));

Maneira mais fácil acredito que seja pelo Simple Date Format.

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String data = sdf.format(relogio);

Na construção do SDF você passa o padrão da data quer. No caso repare que o MM tá maiúsculo. Não me recordo o porque disso, mas tive problema uma vez.

valeu Matheus. Vou tentar fazer aqui

Não deu mano; nao deu erro no codigo q vc passou, só na hora de fazer a conta int id - an;

Date relogio = new Date();

    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    String Data = sdf.format(relogio);
    
    int an = Integer.parseInt(txtAN.getValue().toString());
    int id = relogio - an;
    lblIdade.setText(Integer.toString(id));

SDF é para formatar Date. Para calcular é mais ou menos assim.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); 
String anoString = sdf.format(new Date());

Integer anoInt = Integer.parseInt(anoString);
int an = Integer.parseInt(txtAN.getValue().toString());
int id = anoInt - an;

aaaaaaaaaa. Valeu cara; muito obrigado; sei q para vc parece uma coisa boba, mas para mim q estou começando é muito importante. Ajudou muito !!!

1 curtida

Rlx brother tamo aqui pra ajudar e ser ajudado.

dd (minúsculo): Representa o valor numérico do dia do mês com dois dígitos
mm (minúsculo): Representa o valor numérico dos minutos
MM (maiúsculo): Representa o valor numérico do mês com 2 dígitos
hh (minúsculo): Representa o valor numérico das horas, para horas em formato 12
HH (maiúsculo): Representa o valor numérico das horas, para horas em formato 24
yyyy (minúsculo): Representa o valor numérico do ano, com 4 dígitos
ss (minúsculo): Representa o valor numérico dos segundos
S (maiúsculo): Representa o valor numérico dos milissegundos

Só isso.

Edit:

A título de curiosidade (e, claro, para relembrar, afinal, lembrar é sempre bom), segue alguns links úteis para isso
Link 1 - Oracle
Link 2 - Tutorial bem explicativo
Link 3 - Stackoverflow

1 curtida

Você deve considerar obter a data completa de nascimento da pessoa, tendo em vista que não é apenas o ano que interfere neste cálculo.
Por exemplo: uma pessoa que nasceu em 10/02/1990, obviamente, terá 27 anos em 04/04/2017.
Agora, se a pessoa nasceu em 10/08/1990, ainda não completou 27 anos e, portanto, ainda está com 26 anos.
Cálculo de idade é um pouco complicado, ainda mais quando você vai ler a informação vinda do usuário.

1 curtida

obrigado Luis; vou fazer esas modificaçoes depois

Uma solução mais simples seria você perguntar se o usuário já fez aniversário este ano. De acordo com a resposta, fica facil calcular a idade do mesmo.