Así que estoy usando dateString1.compareTo(dateString2)
que hace una comparación lexicográfica con cadenas, basado en el valor Unicode de cada carácter, y devuelve un int. Aquí hay una muestra de código.Comparando cadenas de fechas en Java
String dateString1 = "05-12-2012";
String dateString2 = "05-13-2012";
if (dateString1.compareTo(dateString2) <=0){
System.out.println("dateString1 is an earlier date than dateString2");
}
¿Es este un enfoque incorrecto para comparar fechas en Java?
En mis pruebas, no me he encontrado en una situación en la que haya obtenido resultados inesperados. Realmente no quiero crear un objeto Date fuera de la cadena, si no es necesario, porque estoy haciendo esto dentro de un bucle de ejecución larga.
Ninja Editar Espigando partir de las respuestas de abajo no hay nada de malo en la comparación de fechas como una cadena si está en formato yyyyMMdd
pero si lo es en cualquier otro formato es obvio que da lugar a error.
De hecho, tengo mi cadena de fecha como formato yyyyMMdd
en mi código actual. (Escribí el formato incorrecto en el ejemplo que di más arriba). Por lo tanto, por ahora, dejaré el código tal como está, y agregaré algunas líneas de comentarios para justificar mi decisión.
Pero ahora veo que comparar cadenas de este tipo es muy limitante y me toparé con errores si dba decide cambiar el formato de fecha en el futuro, lo cual no veo que ocurra.
echar un vistazo a esta pregunta hecha por mí hace algún tiempo http://stackoverflow.com/questions/2592501/compare-dates-in-java – ant