Hay varias formas de comparar las fechas de Java. Internamente, una fecha se representa como un punto (largo) en el tiempo: el número de milisegundos que han transcurrido desde el 1 de enero de 1970. En Java, Date es un objeto, lo que significa que incluye varios métodos de comparación. Cualquier método de comparar dos fechas esencialmente comparará los tiempos de las fechas.
Pasos
Método 1 de 4: uso de compareTo
Paso 1. Utilice compareTo
Date implementa Comparable, por lo que dos fechas se pueden comparar directamente con el método compareTo. Si las fechas son para el mismo momento, el método devuelve cero. Si la fecha que se compara es anterior al argumento de fecha, se devuelve un valor menor que cero. Si la fecha que se compara es posterior al argumento de fecha, se devuelve un valor mayor que cero. Si las fechas son iguales, se devuelve un valor de 0.
Paso 2. Cree los objetos de fecha
Deberá crear cada objeto de fecha antes de poder comenzar a compararlos. Una forma de hacer esto es usar la clase SimpleDateFormat. Permite la entrada fácil de valores de fecha en objetos de fecha.
SimpleDateFormat sdf = new SimpleDateFormat ("aaaa-MM-dd"); // Para declarar valores en nuevos objetos de fecha. use el mismo formato de fecha al crear 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
Paso 3. Compare los objetos de fecha
El siguiente código le mostrará cada caso: menor que, igual y mayor que.
date1.compareTo (fecha2); // fecha1 <fecha2, devuelve menos de 0 fecha2.compareTo (fecha1); // fecha2> fecha1, devuelve mayor que 0 fecha1.compareTo (fecha3); // fecha1 = fecha3, por lo que imprimirá 0 en la consola
Método 2 de 4: uso de iguales, después y antes
Paso 1. Use iguales, después y antes
Las fechas se pueden comparar con los métodos iguales, posteriores y anteriores. Si dos fechas son para el mismo momento, el método equals devolverá verdadero. Los ejemplos utilizarán fechas creadas previamente a partir del método compareTo.
Paso 2. Compare usando el método anterior
El siguiente código muestra un caso verdadero y falso. Si date1 es anterior a date2, before devuelve verdadero. Si no es así, before devuelve falso.
System.out.print (date1.before (date2)); // imprime verdadero System.out.print (date2.before (date2)); // imprime falso
Paso 3. Compare usando el método after
El siguiente código muestra un caso verdadero y falso. Si date2 es posterior a date1, after devuelve verdadero. Si no es así, after devuelve falso.
System.out.print (date2.after (date1)); // imprime verdadero System.out.print (date1.after (date2)); // imprime falso
Paso 4. Compara usando el método de iguales
El siguiente código muestra un caso verdadero y falso. Si las fechas son iguales, equals devuelve verdadero. Si no es así, equals devuelve falso.
System.out.print (date1.equals (date3)); // imprime verdadero System.out.print (date1.equals (date2)); // imprime falso
Método 3 de 4: uso de la clase de calendario
Paso 1. Usa el calendario
La clase de calendario también tiene métodos compareTo, equals, after y before que funcionan de la misma manera que se describió anteriormente para la clase de fecha. Entonces, si la información de la fecha se mantiene en un calendario, no es necesario extraer la fecha solo para realizar una comparación.
Paso 2. Cree instancias de Calendar
Para utilizar los métodos de Calendario, necesitará algunas instancias de Calendario. Afortunadamente, puede simplemente tomar las horas de las instancias de fecha ya creadas.
Calendar cal1 = Calendar.getInstance (); // declara cal1 Calendar cal2 = Calendar.getInstance (); // declara cal2 Calendar cal3 = Calendar.getInstance (); // declara cal3 cal1.setTime (date1); // aplica la fecha a cal1 cal2.setTime (date2); cal3.setTime (fecha3);
Paso 3. Compare cal1 y cal2 usando antes
El siguiente código debería imprimirse verdadero ya que cal1 es anterior a cal2.
System.out.print (cal1.before (cal2)); // imprimirá verdadero
Paso 4. Compare cal1 y cal2 usando after
El siguiente código debería imprimirse falso ya que cal1 es anterior a cal2.
System.out.print (cal1.after (cal2)); // imprime falso
Paso 5. Compare cal1 y cal2 usando iguales
El siguiente código mostrará un ejemplo de un caso verdadero y falso. La condición depende de las instancias de calendario que se comparan. El código debe imprimir "verdadero", luego "falso" en la siguiente línea.
System.out.println (cal1.equals (cal3)); // imprime verdadero: cal1 == cal3 System.out.print (cal1.equals (cal2)); // imprime falso: cal1! = cal2
Método 4 de 4: uso de getTime
Paso 1. Utilice getTime
También es posible comparar directamente el punto de tiempo de dos fechas, aunque es probable que cualquiera de los enfoques anteriores sea más legible y, por lo tanto, preferible. Esta será una comparación de dos tipos de datos primitivos, por lo que se puede hacer con "" y "==".
Paso 2. Cree los objetos de mucho tiempo
Antes de poder comparar las fechas, debe crear números enteros largos con los datos de los objetos Date creados anteriormente. Afortunadamente, el método getTime () hará la mayor parte del trabajo por usted.
long time1 = getTime (fecha1); // declara time1 primitivo de date1 long time2 = getTime (date2); // declara time2 primitivo de date2
Paso 3. Haga una comparación menor
Utilice el símbolo menor que (<) para comparar estos dos valores enteros. Dado que time1 es menor que el tiempo 2, se debería imprimir el primer mensaje. La instrucción else se incluye para una sintaxis adecuada.
if (time1 <time2) {System.out.println ("la fecha1 es anterior a la fecha2"); // imprimirá desde time1 <time2} else {System.out.println ("date1 no es anterior a date2"); }
Paso 4. Haga una mejor comparación
Utilice el símbolo mayor que (>) para comparar estos dos valores enteros. Dado que time1 es mayor que el tiempo 2, se debería imprimir el primer mensaje. La instrucción else se incluye para una sintaxis adecuada.
if (hora2> hora1) {System.out.println ("la fecha2 es posterior a la fecha1"); // imprimirá desde time2> time1} else {System.out.println ("date2 no es posterior a date1"); }
Paso 5. Haga una comparación de iguales
Utilice el símbolo para comprobar la igualdad (==) para comparar la igualdad de estos dos valores enteros. Dado que time1 es igual a time3, se debería imprimir el primer mensaje. Si el programa llega a la instrucción else, eso significa que los tiempos no son iguales.
if (time1 == time2) {System.out.println ("las fechas son iguales"); } else {System.out.println ("las fechas no son iguales"); // imprimirá desde time1! = time2}