Discussão sobre compareTo

3 respostas
eduardoluiz.ribeiro

Olá galera, bom eu estou com um problemão aqui com o método compareTo, ele está retornando a data atual como se fosse antiga ou seja o compareTo está sempre retornando -1 para a data atual (e pelo que pesquisei ele deveria retornar 0) não sei o que estou fazendo de errado mas ja verifiquei o código e aparentemente não tem nada, agora eu fiz uns testes e apareceram umas coisas malucas rsrs vamos discutir sobre issow!

oque eu fiz foi o seguinte:
1°- criei um objeto que pega a data atual do sistema e exibe formatada

Date data2 =new Date();
	//formatando a data 
	Format fData = new SimpleDateFormat("dd'/'MM'/'yyyy");
                String dt2 = fData.format(data2);

2°- converti uma string para o tipo date

SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");   
            Date minhaData = format.parse("27/08/2008");

3°- exibi a comparação

out.println(minhaData.compareTo(data2));

Agora vem o problema pq deveria ser retornado 0 (pois hj é dia 27/08/2008)
mas ele está retornando -1
e outra coisa que eu vi, se eu inverter a sequência da pesquisa para

out.println(data2.compareTo(minhaData));

o método está retornando 1 (com se a data fosse maior).
Bom, eu acho que estou fazendo alguma goiabice para estar assim, se alguem poder esclarecer!! valew!

3 Respostas

T

new Date” retorna a data atual, com as horas, minutos e segundos também.
Quando você usa format.parse, retorna uma data com as horas, minutos e segundos zerados.
Uma forma de você efetuar a comparação correta é normalizar a data atual, zerando as horas, minutos e segundos. Entretanto, pela minha experiência, o correto é normalizar a data deixando todas as datas (inclusive aquele pessoal que você efetuou o parse) para 01:00:00 e não 00:00:00, por causa do malfadado horário de verão.

eduardoluiz.ribeiro

Galera consegui resolver, eu ia excluir o post mas pode ser que ele venha ser util para alguém
o problema era o seguinte
a variável minhaData está sendo convertida com um simpleDateFormat e a variável data2 estava sendo convertida com um Format isso gerou alguma incompatibilidade, bom o problema foi resolvido assim eu passei a fazer a conversão da data atual com o simpleDateFormat e deu de boa!!! rsrsr ta aí galera!

eduardoluiz.ribeiro

opa thingol, eu postei e nem tinha visto o seu post aí, pow interessante essa parte do horário de verão. como posso fazer isso?

Criado 27 de agosto de 2008
Ultima resposta 27 de ago. de 2008
Respostas 3
Participantes 2