Pessoal preciso de uma ajuda de vcs em relação ao uso do método compareTo. Pois não está funcionado direito comigo.
Segue o código abaixo:
[code] GregorianCalendar calendar = new GregorianCalendar();
Date dataAtual = calendar.getTime();
Date horaAtual = calendar.getTime();
SimpleDateFormat formatData = new SimpleDateFormat("dd/MM/yyyy");
SimpleDateFormat formatHora = new SimpleDateFormat("HH:mm:ss");
String novoFormatoDataAtual = formatData.format(dataAtual);
String novoFormatoDataUsuario = formatData.format(data2); //data2= data passada pelo usuário
String novoFormatoHoraAtual = formatHora.format(horaAtual);
String novoFormatoHoraUsuario = formatHora.format(hora); //hora= data passada pelo usuário
//compara as datas e as horas
int comparacaoData = novoFormatoDataUsuario.compareTo(novoFormatoDataAtual);
int comparacaoHora = novoFormatoHoraUsuario.compareTo(novoFormatoHoraAtual);[/code]
É o seguinte na linha:
int comparacaoData = novoFormatoDataUsuario.compareTo(novoFormatoDataAtual);
está retornado -1, sendo que o valor de novoFormatoDataUsuario é 12/12/2012 e o valor de novoFormatoDataAtual é 27/05/2011
Não era para retornar POSITIVO?
Desde já agradeço a ajuda de vcs!
Jovem,
Você quer comparar duas datas utilizando String ???
Por que você nao usa o compareTo do date?
Tenho quase certeza o que você esta fazendo não vai funcionar, comparar duas strings como se fosse data.
Por exemplo neste codigo vai ser impresso “-1”.
String a = "1";
String b = "22";
System.out.println(a.compareTo(b));
abs,
não precisa formatar em string pra comparar
utilize o Calendar do java.util.Calendar ele tem o método compareTo
como o Kanin Dragon mencionou, utilize variáveis do tipo Date para a comparação
OK, amigo!
Você poderia me auxiliar no uso do compareTo do Date?
Desde já agradeço!
o método compareTo irá retornar:
0, se iguais;
Positivo, se o primeiro elemento for MAIOR que o segundo
Negativo, se o primeiro elemento for MENOR que o segundo
Integer a = 5;
Integer b = 10;
String aa = "12/12/2012";
String bb = "27/05/2011";
//a < b
int comparacaoData = a.compareTo(b);
int comparacaoHora = b.compareTo(a);
int comparacaoData1 = aa.compareTo(bb);
int comparacaoHora1 = bb.compareTo(aa);
System.out.println(comparacaoData + " " + comparacaoHora);
System.out.println(comparacaoData1 + " " + comparacaoHora1);
Testa aí…
Aqui saiu -1 -1 e -1 -1
Date a = new Date();
Date b = new Date();
int resultado = a.compareTo(b);
System.out.println(resultado);
Amigos, obrigado pela ajuda.
Mais uma dúvida. Como eu converto a data que o usuário digitar no formulário que uma uma String para o formato Date para que eu possa usar o método CompareTo com datas???
Obrigado
Jovem,
Seguindo o seu código seria desta forma.
formatData.getCalendar();
Abs,
Acho que o SimpleDateFormat resolve
String sdate = "27/05/2011";
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date novaData = sdf.parse(sdate);
Sim. Strings representam texto, somente texto e nada mais do que texto. Se o texto de entrada do seu usuário, pode ser convertido para um tipo mais apropriado, converta-o.
Pessoal está ocorrendo mais um erro. É o seguinte estou comparando as datas no formato Date, até aí tudo beleza, mas quando comparo as datas sendo iguais, ou seja, o mesmo o compareTo retorna o valor -1.
As datas estão sendo comparadas da seguinte forma:
OBS: é cmo está saindo no System.out.println
Data passada pelo usuário: 2011-05-29
Data passada atual: Mon May 30 09:08:30 BRT 2011
ComareTo -1
Desde já agradeço.
Observe que na comparação ele leva em consideração as horas, minutos, segundos e centézimos. Zere esses campos das duas datas se você quiser só comparar dias.
OK, amigo!
Mas, como eu faço para deixar a dataAtual no formato yyyy-MM-dd ???
OBS: Deixando-o a mesma no formato Date, ou seja, sem converter para String.
Obrigado,
pode fazer assim:
Date data = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(data));
Esqueça o formato. Para o Date isso não é relevante.
Mas, basicamente, basta copiar seu Date para outro Date:
Date dataSemHoras = new Date(dataComHoras.getYear(), dataComHoras.getMonth(), dataComHoras.getDate());
Detalhe. Ao invés de trabalhar com objeto do tipo Date, considere fortemente a possibilidade de trabalhar com objetos da classe Calendar. O calendar é o substituto do date.
Outra possibilidade é usar o JODA-Time, que tem a classe DateMidnight:
http://joda-time.sourceforge.net/
Amigo,
Assim a data fica como String. Aí a comparação entre datas não funciona.
Obrigado,