wikiHow es un "wiki", lo que significa que muchos de nuestros artículos están escritos por varios autores. Para crear este artículo, autores voluntarios han trabajado para editarlo y mejorarlo con el tiempo.
Este artículo ha sido visto 137 898 veces.
Existen varias formas de comparar dos fechas en Java. Una fecha se representa internamente como un punto en el tiempo de tipo long: la cantidad de milisegundos que han transcurrido desde el 1 de enero de 1970. En Java, Date (en español, "fecha") es un objeto, lo cual significa que incluye varios métodos para establecer comparaciones. Cualquier método para comparar dos fechas, básicamente comparará el tiempo de esas fechas.
Pasos
Método 1
Método 1 de 4:Utilizar compareTo
-
1Utiliza compareTo. La clase Date implementa Comparable<Date>; por lo tanto, puedes comparar dos fechas directamente con el método compareTo. Si las fechas representan al mismo punto en el tiempo, el método devolverá un cero. Si la fecha que vas a comparar es anterior al argumento date, el método devolverá un valor menor a cero. Si la fecha que vas a comparar es posterior al argumento date, el método devolverá un valor mayor a cero. Si las fechas son iguales, el método devolverá un cero. [1]
-
2Crea objetos de tipo date. Necesitarás crear cada objeto date antes de comenzar a comparar las fechas. Una forma de hacerlo, es utilizando la clase SimpleDateFormat. Con ella puedes ingresar valores de fecha fácilmente en objetos de tipo date.
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //Para declarar valores en nuevos objetos date, usa el mismo formato date que usaste al crear las fechas Date date1 = sdf.parse("1995-02-23"); //date1 es el 23 de febrero de 1995 Date date2 = sdf.parse("2001-10-31"); //date2 es el 31 de octubre de 2001 Date date3 = sdf.parse("1995-02-23"); //date3 es el 23 de febrero de 1995
-
3Compara objetos date. El código que aparece a continuación te mostrará cada caso (menor que, igual y mayor que).
date1.compareTo(date2); //date1 < date2, devuelve un valor menor que 0 date2.compareTo(date1); //date2 > date1, devuelve un valor mayor que 0 date1.compareTo(date3); //date1 = date3, se mostrará un 0 en la consola
Anuncio
Método 2
Método 2 de 4:Utilizar equals, after y before
-
1Utiliza equals, after y before. Las fechas pueden compararse con los métodos equals (igual), after (después) y before (antes). Si dos fechas representan al mismo punto en el tiempo, el método equals devolverá true (verdadero). Estos ejemplos usarán las fechas creadas previamente para el método compareTo. [2]
-
2Compara usando el método before. El siguiente código muestra un caso verdadero y uno falso. Si date1 es anterior a date2, before devolverá true. De lo contrario, devolverá false.
System.out.print(date1.before(date2)); //muestra true (verdadero) System.out.print(date2.before(date2)); //muestra false (falso)
-
3Compara usando el método after. El siguiente código muestra un caso verdadero y uno falso. Si date2 es posterior a date1, after devolverá true. De lo contrario, devolverá false.
System.out.print(date2.after(date1));//muestra true (verdadero) System.out.print(date1.after(date2));//muestra false (falso)
-
4Compara usando el método equals. El siguiente código muestra un caso verdadero y uno falso. Si las fechas son iguales, equals devolverá true. Si no lo son, devolverá false.
System.out.print(date1.equals(date3));//muestra true (verdadero) System.out.print(date1.equals(date2));//muestra false (falso)
Anuncio
Método 3
Método 3 de 4:Utilizar la clase Calendar
-
1Utiliza la clase Calendar. La clase Calendar también tiene los métodos compareTo, equals, after y before que trabajan de la misma forma que se describió anteriormente para la clase date. Entonces, si la información está guardada en un objeto Calendar, no hay necesidad de extraer la fecha solo para hacer una comparación.[3]
-
2Crea instancias de Calendar. Para usar los métodos de Calendar, necesitarás crear algunas instancias de esta clase. Afortunadamente, puedes simplemente tomar las fechas de las instancias de Date que creaste antes.
Calendar cal1 = Calendar.getInstance(); //declara cal1 Calendar cal2 = Calendar.getInstance(); //declara cal2 Calendar cal3 = Calendar.getInstance(); //declara cal3 cal1.setTime(date1); //applies date to cal1 cal2.setTime(date2); cal3.setTime(date3);
-
3Compara cal1 y cal2 usando before. El siguiente código deberá mostrar true ya que cal1 es anterior a cal2.
System.out.print(cal1.before(cal2)); //mostrará true (verdadero)
-
4Compara cal1 y cal2 usando after. El siguiente código deberá mostrar false ya que cal1 es anterior a cal2.
System.out.print(cal1.after(cal2)); //mostrará false (falso)
-
5Compara cal1 y cal2 usando equals. El siguiente código muestra un ejemplo verdadero y uno falso. La condición depende de las instancias del calendario que se estén comparando. El código deberá mostrar true y luego false en la línea siguiente.
System.out.println(cal1.equals(cal3)); //mostrará true (verdadero): cal1 == cal3 System.out.print(cal1.equals(cal2)); //mostrará false (falso): cal1 != cal2
Anuncio
Método 4
Método 4 de 4:Utilizar getTime
-
1Utiliza getTime. También puedes comparar fechas directamente desde el punto en el tiempo que representan esas fechas, sin embargo, tal vez sea mejor usar los métodos anteriores porque son más legibles y por lo tanto más convenientes. Esta comparación se hará con dos tipos de datos primitivos, por lo tanto puedes hacerla con <, > y ==.
-
2Crea los objetos de tiempo de tipo long. Antes de poder comparar las fechas, debes crear objetos enteros de tipo long con los datos de los objetos Date que habías creado. Afortunadamente, el método getTime se encargará de hacer el trabajo por ti.
long time1 = getTime(date1); //declara la variable primitiva time1 a partir de date1 long time2 = getTime(date2); //declara la variable primitiva time2 a partir de date2
-
3Haz una comparación de tipo "menor que". Utiliza el símbolo "menor que" (<) para comparar estos dos valores enteros. Como time1 es menor que time2, deberá mostrarse el primer mensaje. La sentencia else se incluye con a fines de aplicar una sintaxis apropiada.
if(time1 < time2){ System.out.println("date1 es anterior a date2"); //se mostrará este mensje porque time1 <time2 } else{ System.out.println("date1 es anterior a date2"); }
-
4Haz una comparación de tipo "mayor que". Utiliza el símbolo "mayor que" (>) para comparar estos dos valores enteros. Como time1 es mayor que time2, deberá mostrarse el primer mensaje. La sentencia else se incluye con a fines de aplicar una sintaxis apropiada.
if(time2 > time1){ System.out.println("date2 es posterior a date1"); //se mostrará este mensje porque time2 > time1 } else{ System.out.println("date2 no es posterior a date1"); }
-
5Haz una comparación de tipo "igual". Utiliza el símbolo de verificación de igualdad (==) para comparar estos dos valores enteros. Como time1 es igual que time2, deberá mostrarse el primer mensaje. Si el programa llega hasta la sentencia else, significa que las fechas no son iguales.[4]
if(time1 == time2){ System.out.println("las fechas son iguales"); } else{ System.out.println("las fechas no son iguales"); //se mostrará este mensje porque time1 != time2 }
Anuncio