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.
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étodoequals
en su lugar, el cual devolverátrue
si las dos fechas son las mismas.