Comparaçao de Date

e ai…alguem pode me ajudar…
estou fazendo um sistema que o usuario informa a data de aniversario que é uma String “dd/MM/yyyy”
e converto ela para um Date

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy") try{ setNi(sdf.parse(getNiver())); //setNi é um Date e getNiver é uma string no caso a data q o usuario passo }catch (Exception e) { }

ai na outra classe onde irei fazer a comparaçao da data atual do SO com a data de aniversario não ta dando certo
nao ta comparando to fazendo assim:

Date d=new Date(); // peguei a data completa do SO

[code]SimpleDateFormat sdf =new SimpleDateFormat(“dd/MM/yyyy”);
sdf.format(d); // to formatando o Date no formarto igual a data q o usuario passou “dd/MM/yyyy”

Cidadao ci=null; //Cidadao é classe onde esta a data de aniversario
for(int i=0;i<vec.size();i++){
ci=(Cidadao)vec.get(i);
if(d.equals(ci.getNi())){//to comparando a Date d (do Sistema Operacional) com a Date do usuario
saida+=ci+"\n";
}
}System.out.println(“testee:\n”+saida);[/code]

mas nao ta entrando nesse “if” nao sei o que to fazendo de errado…
se eu converter todas as datas para uma String ai da certo, mas eu quero converter tudo para Date e comparar
Date com Date
abraçoo

é o seguinte…
qndo vc faz um Data d = new Date(); vc está pegando a data do sistema e tb a hora

entao qndo vc faz d.equals(ci.getNi()) está sendo comparado o objeto por completo incluindo a hora!
entao seta todas as horas, minutos e segundos(incluindo a do sistema) com 0

Um aviso sobre o Date, ele não trata somente de ano, meses e dias, como também horas, minutos, segundos e milésimos de segundo.

Comparar uma data de aniversário com a data atual seria comparar o dia 08/07/2009 00:00:00.000 com 08/07/2009 12:30:59.123. As datas não são iguais.

Use o Calendar da API do Java para retirar o tempo e comparar com a meia-noite de cada dia.

Ou estude sobre o JodaTime para esse tipo e outros tipos de problemas como ele mais facilmente.

Couta…

tenta usar o compareTo()

d.compareTo(ci.getNi() == 0)

Abraço

[quote=danferreir4]Couta…

tenta usar o compareTo()

d.compareTo(ci.getNi() == 0)

Abraço

[/quote]

Vai dar na mesma.

aplica o format na data do sistema operacional tb…

é foi praticamente isso que fiz tbm e deu certo…
transformei minha String com a data do aniversario para Date, dpois peguei a data do SO formatei para “dd/MM/yyyy” transformei para String e trasnformei para Date dnovo, meio estranho neh… mas tem q ser assim mesmo haeuae
abraço e vlw galera

setNiver(JOptionPane.showInputDialog("Dia do seu Aniversario:\nEx:08/01/1987")); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); try{ setNi(sdf.parse(getNiver())); }catch (Exception e) { } System.out.println(sdf.format(getNi())); }

[code]Date dd =new Date();
SimpleDateFormat sdf =new SimpleDateFormat(“dd/MM/yyyy”);
String dd2= sdf.format(dd);
Date d=null;
try{
d=sdf.parse(dd2);
}catch (Exception e) {
}
String saida=“Aniversariante\n”;
Cidadao ci=new Cidadao();
for(int i=0;i<vec.size();i++){
ci=(Cidadao)vec.get(i);
if(d.compareTo(ci.getNi())==0){
saida+=ci.toString()+"\n";
}

	}
	
	JOptionPane.showMessageDialog(null,saida);
}[/code]