4 formas de comparar dos fechas en Java

Tabla de contenido:

4 formas de comparar dos fechas en Java
4 formas de comparar dos fechas en Java

Video: 4 formas de comparar dos fechas en Java

Video: 4 formas de comparar dos fechas en Java
Video: Cambiar interfaz de Inkscape para trabajar mejor 2024, Marcha
Anonim

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

4301351 1
4301351 1

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.

4301351 2
4301351 2

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

4301351 3
4301351 3

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

4301351 4
4301351 4

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.

4301351 5
4301351 5

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

4301351 6
4301351 6

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

4301351 7
4301351 7

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

4301351 8
4301351 8

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.

4301351 9
4301351 9

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);

4301351 10
4301351 10

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

4301351 11
4301351 11

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

4301351 12
4301351 12

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

4301351 13
4301351 13

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 "==".

4301351 14
4301351 14

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

4301351 15
4301351 15

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"); }

4301351 16
4301351 16

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"); }

4301351 17
4301351 17

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}

Recomendado: