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.

Método 1
Método 1 de 4:
Utilizar compareTo

  1. 1
    Utiliza 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]
  2. 2
    Crea 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
      
  3. 3
    Compara 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

  1. 1
    Utiliza 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]
  2. 2
    Compara 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)
      
  3. 3
    Compara 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)
      
  4. 4
    Compara 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

  1. 1
    Utiliza 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]
  2. 2
    Crea 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);
      
  3. 3
    Compara 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)
      
  4. 4
    Compara 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)
      
  5. 5
    Compara 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

  1. 1
    Utiliza 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 ==.
  2. 2
    Crea 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
      
  3. 3
    Haz 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");
      }
      
  4. 4
    Haz 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");
      }
      
  5. 5
    Haz 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

Acerca de este wikiHow

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.
Categorías: Software
Anuncio