Buscar Intervalo entre duas Datas

2 respostas
J

Olá pessoal,

Estou como uma dúvida terrível.

Eu estou criando uma classe Aluno e nesta classe eu possuo o atributo [color=blue]dataNascimento[/color] e preciso criar um método que identifique a [color=red]data atual[/color] e retorne a diferença entre as duas datas em anos para obter a idade deste aluno.

Será que seria possível efetuar isto utilizando o [color=brown]GregorianCalendar[/color]?

Lembrando que minha classe é anotada para Hibernate, isso faria alguma diferença?

@Entity
@Table
public class Aluno {
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	@Column
	private Integer idAluno;
	
	@Column
	private String nomeAluno;
	
	//classe Enum
	@Enumerated(EnumType.STRING)
	private Sexo sexoAluno;
	
	@Temporal(TemporalType.DATE)
	private Date dataNascimento;
	
	//SETs e GETs

2 Respostas

F

Bom… você pode criar um atributo que seria o resultado final e colocar um método no construtor que faria o cálculo. E, creio que o melhor seja Gregorian Calendar mesmo.

Renan_Celso

Bom, para pegar a data atual e saber a diferença em anos entre ela e sua data de nascimento você pode fazer assim:
Abaixo, coloco o código fonte da classe inteira!
Caso você não entenda algo, é só falar, mas acho que só de olhar você consegue entender facilmente!
O método que você quer eu chamo de “retornaDiferenca” na classe!

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

/**
 *
 * @author Renan Celso
 */
public class Data {
    
    public static void main(String[] args) {
        
        Calendar dataNasc = Calendar.getInstance();
        dataNasc.set(1989, 2, 29);
        Date dataNascimento = dataNasc.getTime();
        
        System.out.println("Diferença: "+retornaDiferenca(dataNascimento));        
        
    }   
    
    public static Integer retornaDiferenca(Date dataNascimento) {

        Calendar dataAtual = Calendar.getInstance();
        
        Calendar dtNascAux = Calendar.getInstance();
        dtNascAux.setTime(dataNascimento);
        
        Integer diferenca = dataAtual.get(Calendar.YEAR) - dtNascAux.get(Calendar.YEAR);
        
        return diferenca;

    }
}
Criado 2 de setembro de 2011
Ultima resposta 3 de set. de 2011
Respostas 2
Participantes 3