Galera, procurei no fórum mas não encontrei nada que pudesse me ajudar…
O problema é que preciso comparar duas datas…uma armazenada e outra vem do pc (data atual)…
Tentei fazer usando compareTo mas só retorna false…
Alguém poderia me ajudar?
publicclassData{intdia;intmes;intano;Data(){Calendarcalendario=Calendar.getInstance();dia=calendario.get(Calendar.DAY_OF_MONTH);mes=calendario.get(Calendar.MONTH);ano=calendario.get(Calendar.YEAR);System.out.println(Feriado(calendario));}privateStringFeriado(Calendardt){Stringentrada="21/04/2012";Stringnome="Tiradentes";String[]data=entrada.split("\\/");Calendarfolga=Calendar.getInstance();folga.set(Calendar.DAY_OF_MONTH,Integer.parseInt(data[0]));folga.set(Calendar.MONTH,Integer.parseInt(data[1]));folga.set(Calendar.YEAR,Integer.parseInt(data[2]));if(folga.compareTo(dt)==0){return"Feriado de "+nome;}else{return"Não é feriado";}}
Fiz o teste com o codigo abaixo verifique por favor se atende sua dúvida e qualquer coisa poste novamente, se der certo poste também,
Segue abaixo:
packageformatacao;importjava.text.SimpleDateFormat;importjava.util.Calendar;publicclassData{publicstaticvoidmain(String[]args){newData();}intdia;intmes;intano;Data(){Calendarcalendario=Calendar.getInstance();dia=calendario.get(Calendar.DAY_OF_MONTH);mes=calendario.get(Calendar.MONTH);ano=calendario.get(Calendar.YEAR);System.out.println(Feriado(calendario));}privateStringFeriado(Calendardt){Stringentrada="21/04/2012";Stringnome="Tiradentes";String[]data=entrada.split("\\/");Calendarfolga=Calendar.getInstance();folga.set(Calendar.DAY_OF_MONTH,Integer.parseInt(data[0]));folga.set(Calendar.MONTH,Integer.parseInt(data[1])-1);folga.set(Calendar.YEAR,Integer.parseInt(data[2]));SimpleDateFormatdf=newSimpleDateFormat("dd/MMMM/yyyy");System.out.println(df.format(folga.getTime()));System.out.println(df.format(dt.getTime()));System.out.println(folga.getTimeInMillis());System.out.println(dt.getTimeInMillis());if(folga.getTime().equals(dt.getTime())){return"Feriado de "+nome;}else{return"Não é feriado";}}}
maior_abandonado
para comparar dois Calendar se são iguais você pode usar equals… se uma de suas datas estáno formato string você pode passar para date com DateFormat e de date para Calendar criando um Calendar e passado seu Date no método setTime desse Calendar… até tem um método “set” que recebe 3 inteiros para dia mês e ano mas se você tem api para isso ficar separando string por barra, transformando em inteiro… enfim me parece meio ruim…
ribclauport
E lembre-se que os meses começam em 0 sendo assim tem ajuste la na data para o mes 4(maio) ficando para abril 4-1.
Agora para comparar Calendar pelo que vi no javaDoc do proprio método sobrescrito creio que deva usar compareTO repare no java Doc abaixo:
/**
* Compares this <code>Calendar</code> to the specified
* <code>Object</code>. The result is <code>true</code> if and only if
* the argument is a <code>Calendar</code> object of the same calendar
* system that represents the same time value (millisecond offset from the
* <a >Epoch</a>) under the same
* <code>Calendar</code> parameters as this object.
*
* <p>The <code>Calendar</code> parameters are the values represented
* by the <code>isLenient</code>, <code>getFirstDayOfWeek</code>,
* <code>getMinimalDaysInFirstWeek</code> and <code>getTimeZone</code>
* methods. If there is any difference in those parameters
* between the two <code>Calendar</code>s, this method returns
* <code>false</code>.
*
* <p>Use the {@link #compareTo(Calendar) compareTo} method to
* compare only the time values.
*
* @param obj the object to compare with.
* @return <code>true</code> if this object is equal to <code>obj</code>;
* <code>false</code> otherwise.
*/
Use compareTo(Calendar)compareTo method to compare only the time values.
Gustavo_D_Martins
Putz agora deu certo…O problema estava no mês pois ele começa contando do 0 (zero), ou seja sempre estava um mês a frente…Vlw Galera…
Foi só alterar essa linha colocando o -1
Bom para finalizar estava vendo aqui a respeito se fosse usar o compareTO apenas com calendar…
Desta forma não se esqueça de zerar os segundos milisegundos e hora se não o resultado fica inconsistente segue abaixo como seria…
packageformatacao;importjava.text.SimpleDateFormat;importjava.util.Calendar;publicclassData{publicstaticvoidmain(String[]args){newData();}intdia;intmes;intano;Data(){Calendarcalendario=Calendar.getInstance();calendario.set(Calendar.HOUR,0);calendario.set(Calendar.MINUTE,0);calendario.set(Calendar.SECOND,0);calendario.set(Calendar.MILLISECOND,0);dia=calendario.get(Calendar.DAY_OF_MONTH);mes=calendario.get(Calendar.MONTH);ano=calendario.get(Calendar.YEAR);System.out.println(Feriado(calendario));}privateStringFeriado(Calendardt){Stringentrada="21/04/2012";Stringnome="Tiradentes";String[]data=entrada.split("\\/");Calendarfolga=Calendar.getInstance();folga.set(Calendar.DAY_OF_MONTH,Integer.parseInt(data[0]));folga.set(Calendar.MONTH,Integer.parseInt(data[1])-1);folga.set(Calendar.YEAR,Integer.parseInt(data[2]));folga.set(Calendar.HOUR,0);folga.set(Calendar.MINUTE,0);folga.set(Calendar.SECOND,0);folga.set(Calendar.MILLISECOND,0);if(dt.compareTo(folga)==0){return"feriado";}else{return"não é feriado";}}}