es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La función “compareTo” de Java.util.Calendar no entrega resultados consistentes.

public boolean checkDates(String oldDate, String newDate){
java.util.Calendar oldCal = java.util.Calendar.getInstance();
java.util.Calendar newCal = java.util.Calendar.getInstance();
String[] oD = oldDate.split(“-“);
String[] nD = newDate.split(“-“);
oldCal.set(Integer.parseInt(oD[0]), Integer.parseInt(oD[1])-1, Integer.parseInt(oD[2]));
newCal.set(Integer.parseInt(nD[0]), Integer.parseInt(nD[1])-1, Integer.parseInt(nD[2]));

if(newCal.compareTo(oldCal) > 0){
     return true;
}else {
     return false;
}

}

Este es el código que estoy implementando con resultados variados para las fechas en el mismo día. A veces compareTo entrega un 1, a veces un 0. Aquí hay un ejemplo de impresión de las fechas que se están comparando:

oldCal Vie Nov 17 23:30:48 CST 2021
newCal Vie Nov 17 23:30:48 CST 2021

Todos los tiempos han sido los mismos tanto en los retornos de 1 como en los 0’s.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está con el método compareTo, que devuelve 0 cuando las dos fechas son iguales. Para solucionarlo, puedes utilizar el método equals en su lugar, el cual devolverá true si las dos fechas son las mismas.

Comments are closed.