[RESOLVIDO] - calcular idade

Boa tarde…
Estou tendo que fazer um método que calcula a idade de um funcionário, e uma dica que eu recebi é que, subtraindo a data invertida de nascimento da data invertida de hoje e dividindo por 10000, obtêm-se a idade do funcionário. Mas eu não estou conseguindo fazer.

A classe onde tem os dados de data é essa aqui:

[code] //importa a classe da biblioteca Java
import java.util.GregorianCalendar;
public class Data{
private int dia;
private int mes;
private int ano;
//---------------------------------------------

        // constrói o objeto Data com a data recebida no
    
         // recebidos via parâmetros
            public Data(int d, int m, int a){
            dia = d;
            mes = m;
            ano = a;
        }
        //----------------------------------------------
        
        // inteiro AAAAMMDD
            public Data(int data){
            setAno(data/10000);
            setDia(data%100);
            setMes(data/10000/100);
        }
        //----------------------------------------------
    
        // constrói o objeto Data com a data atual
           public Data(){
            GregorianCalendar c = new GregorianCalendar();
            dia = c.get(GregorianCalendar.DAY_OF_MONTH);
            mes = c.get(GregorianCalendar.MONTH)+1;
            ano = c.get(GregorianCalendar.YEAR);
        }
        //---------------------------------------------   
        
        public static boolean bissexto(int intAno) {  
          
            if ((intAno % 4 == 0 && intAno % 100 != 0) || (intAno % 400 == 0))     
            return true;     
            else     
            return false;     
          }  
           
           
        public void setDia(int dia){
            
            if (dia > 0 && dia < 32){
               this.dia = dia;
               }else{
               this.dia=1;
              }
            }
        
        
        public void setMes(int mes){
            
            if (mes > 1 && mes < 13){
            this.mes = mes;
            } else {
                this.mes=1;
            }
        }
       
        public void setAno(int ano){
            if (ano >= 1920 && ano <= getAno()){
            this.ano = ano;
            } else {
            this.ano = getAno();
            }
        }
           
        
        // métodos de acesso aos atributos
           public int getDia(){
           return dia;
        }
        
           public int getMes(){
           return mes;
        }
        
           public int getAno(){
           return ano;
        }
        
        // retorna a data no formato padrão dd/mm/AA
            public String getDataPadrao(){
            return dia + "/" + mes + "/" + ano;
        }
        //----------------------------------------------
       
        // retorna a data como um número inteiro (ano mês, dia)
    
           public int getDataInvertida(){
           return ano * 10000 + mes * 100 + dia;
        }
        
      }//fim da classe [/code]

Cara … muito mais simples

[code]public int calculaidade(Date nasc){

Calendar cData = Calendar.getInstance();  
    Calendar cHoje= Calendar.getInstance();  
    
    cData.setTime(nasc);  
    cData.set(Calendar.YEAR, cHoje.get(Calendar.YEAR));  
    
    int idade = cData.after(cHoje) ? -1 : 0;  
    cData.setTime(nasc);  
    
    idade += cHoje.get(Calendar.YEAR) - cData.get(Calendar.YEAR);  
	
    return idade;

}[/code]

verdade, bem mais fácil…mas desse jeito que eu falei, de fazer todo o cálculo pegando as datas invertidas, tu sabe como fazer?

Dica 1: Como vc calcularia a sua idade?
Nao faria a data de hoje menos a data do seu nascimento?

Dica 2: Google: substração de datas em java

Beleza, consegui.

[quote=maxcanoas] uma dica que eu recebi é que, subtraindo a data invertida de nascimento da data invertida de hoje e dividindo por 10000[/quote]…

“Data invertida”? Parece dica de quem usa .NET, não Java. Pelo que imagino, a tal dica é mais ou menos assim:

using System;

class Teste {
    public static void Main (string[] args) {
        // Aqui a tal "data invertida"
	DateTime dt1 = new DateTime (1825, 12, 2);
        DateTime dt2 = new DateTime (1891, 12, 5);
        // A diferença é um TimeSpan
	TimeSpan ts = dt2 - dt1;
	// Em dias, dá:
        Console.WriteLine (ts);
	// Em anos, é bem mais difícil de calcular, porque cada ano pode ter 365 ou 366 dias.
	// Pode-se usar a classe descrita em: http://www.codeproject.com/Articles/168662/Time-Period-Library-for-NET
	// Mas para ter uma idéia, o personagem histórico cujo nascimento e morte foram dados nessas
	// datas morreu com aproximadamente:
	Console.WriteLine (ts.Days / 365);
    }
}