4 maneres de comparar dues dates a Java

Taula de continguts:

4 maneres de comparar dues dates a Java
4 maneres de comparar dues dates a Java

Vídeo: 4 maneres de comparar dues dates a Java

Vídeo: 4 maneres de comparar dues dates a Java
Vídeo: Инструмент «Перо Безье» в Inkscape 2024, Abril
Anonim

Hi ha diverses maneres de comparar les dates de Java. Internament, una data es representa com un punt (llarg) en el temps: el nombre de mil·lisegons que han transcorregut des de l'1 de gener de 1970. A Java, Date és un objecte, el que significa que inclou múltiples mètodes de comparació. Qualsevol mètode de comparació de dues dates compararà essencialment les hores de les dates.

Passos

Mètode 1 de 4: utilitzant compareTo

4301351 1
4301351 1

Pas 1. Utilitzeu compareTo

Implementa la data Comparable i, per tant, es poden comparar dues dates directament amb el mètode compareTo. Si les dates corresponen al mateix moment, el mètode retorna zero. Si la data que es compara és anterior a l'argument de la data, es retorna un valor inferior a zero. Si la data que es compara és posterior a l'argument de la data, es retorna un valor superior a zero. Si les dates són iguals, es retorna un valor de 0.

4301351 2
4301351 2

Pas 2. Creeu els objectes de data

Haureu de crear cada objecte de data abans de començar a comparar-los. Una manera de fer-ho és utilitzar la classe SimpleDateFormat. Permet introduir fàcilment valors de data en objectes de data.

    SimpleDateFormat sdf = new SimpleDateFormat ("aaaa-MM-dd"); // Per declarar valors en objectes de data nous. utilitzeu el mateix format de data quan creeu dates Data data1 = sdf.parse ("23-02 1995"); // data1 és el 23 de febrer de 1995 Data data2 = sdf.parse ("2001-10-31"); // data2 és el 31 d’octubre de 2001 Data date3 = sdf.parse ("23-02 1995"); // data3 és el 23 de febrer de 1995

4301351 3
4301351 3

Pas 3. Compareu els objectes de data

El codi següent us mostrarà cada cas: menor, igual i superior a.

    data1.compareTo (data2); // data1 <data2, retorna menys de 0 date2.compareTo (date1); // data2> data1, retorna més de 0 date1.compareTo (date3); // data1 = data3, de manera que s'imprimirà 0 a la consola

Mètode 2 de 4: utilitzar iguals, després i abans

4301351 4
4301351 4

Pas 1. Feu servir iguals, després i abans

Les dates es poden comparar amb els iguals, després i abans dels mètodes. Si dues dates corresponen al mateix moment, el mètode igual tornarà a ser cert. Els exemples faran servir dates creades prèviament amb el mètode compareTo.

4301351 5
4301351 5

Pas 2. Compareu amb el mètode d'abans

El codi següent mostra un cas vertader i fals. Si la data1 és anterior a la data2, abans torna a ser cert. Si no és així, abans torna fals.

    System.out.print (data1.abans (data2)); // imprimeix System.out.print veritable (data2.abans (data2)); // imprimeix fals

4301351 6
4301351 6

Pas 3. Compareu amb el mètode after

El codi següent mostra un cas vertader i fals. Si la data2 és posterior a la data1, després torna a ser cert. Si no és així, després retorna false.

    System.out.print (date2.after (date1)); // imprimeix true System.out.print (date1.after (date2)); // imprimeix false

4301351 7
4301351 7

Pas 4. Compareu amb el mètode igual

El codi següent mostra un cas vertader i fals. Si les dates són iguals, igual retorna cert. Si no ho són, igual retorna fals.

    System.out.print (date1.equals (date3)); // imprimeix true System.out.print (date1.equals (date2)); // imprimeix false

Mètode 3 de 4: utilitzar la classe Calendar

4301351 8
4301351 8

Pas 1. Utilitzeu el calendari

La classe de calendari també té mètodes compareTo, iguals, posteriors i anteriors que funcionen de la mateixa manera que es descriu anteriorment per a la classe de dates. Per tant, si la informació de la data es conserva en un calendari, no cal extraure la data només per fer una comparació.

4301351 9
4301351 9

Pas 2. Creeu instàncies de Calendar

Per utilitzar els mètodes de Calendar, necessitareu algunes instàncies de Calendar. Per sort, només podeu agafar les hores de les instàncies de data ja creades.

    Calendari cal1 = Calendar.getInstance (); // declara cal1 Calendari cal2 = Calendar.getInstance (); // declara cal2 Calendar cal3 = Calendar.getInstance (); // declara cal3 cal1.setTime (data1); // aplica la data a cal1 cal2.setTime (data2); cal3.setTime (data3);

4301351 10
4301351 10

Pas 3. Compareu cal1 i cal2 utilitzant abans

El codi següent hauria d’imprimir true ja que cal1 és anterior a cal2.

    System.out.print (cal1.before (cal2)); // imprimirà true

4301351 11
4301351 11

Pas 4. Compareu cal1 i cal2 utilitzant després

El codi següent hauria d’imprimir fals ja que cal1 és anterior a cal2.

    System.out.print (cal1.after (cal2)); // imprimeix fals

4301351 12
4301351 12

Pas 5. Compareu cal1 i cal2 fent servir iguals

El codi següent mostrarà un exemple tant de cas vertader com de fals. La condició depèn de les comparacions de calendari. El codi hauria d'imprimir "true" i després "false" a la següent línia.

    System.out.println (cal1.equals (cal3)); // imprimeix true: cal1 == cal3 System.out.print (cal1.equals (cal2)); // imprimeix false: cal1! = cal2

Mètode 4 de 4: utilitzar getTime

4301351 13
4301351 13

Pas 1. Utilitzeu getTime

També és possible comparar directament el punt de temps de dues dates, tot i que és probable que qualsevol dels enfocaments anteriors sigui més llegible i tan preferible. Aquesta serà una comparació de dos tipus de dades primitives, de manera que es pot fer amb "" i "==".

4301351 14
4301351 14

Pas 2. Creeu els objectes de molt temps

Abans de poder comparar les dates, heu de crear nombres enters llargs amb les dades dels objectes Data creats anteriorment. Per sort, el mètode getTime () us farà la major part del treball.

    long time1 = getTime (data1); // declara l'hora primitiva1 des de la data1 molt temps2 = getTime (data2); // declara l’hora primitiva2 a partir de la data2

4301351 15
4301351 15

Pas 3. Feu una comparació menor que

Utilitzeu el símbol less than (<) per comparar aquests dos valors enters. Com que el temps 1 és inferior al temps 2, s’hauria d’imprimir el primer missatge. La sentència else s'inclou per a una sintaxi adequada.

    if (hora1 <hora2) {System.out.println ("la data1 és anterior a la data2"); // imprimirà des de l'hora1 <l'hora2} else {System.out.println ("la data1 no és anterior a la data2"); }

4301351 16
4301351 16

Pas 4. Feu una comparació més gran que la comparació

Utilitzeu el símbol major que (>) per comparar aquests dos valors enters. Com que el temps1 és superior al temps 2, s’hauria d’imprimir el primer missatge. La sentència else s'inclou per a una sintaxi adequada.

    if (hora2> hora1) {System.out.println ("la data2 és posterior a la data1"); // imprimirà des de l'hora2> l'hora1} else {System.out.println ("la data2 no és posterior a la data1"); }

4301351 17
4301351 17

Pas 5. Feu una comparació igual

Utilitzeu el símbol per comprovar si hi ha igualtat (==) per comparar aquests dos valors enters per a la igualtat. Com que time1 és igual a time3, s'hauria d'imprimir el primer missatge. Si el programa arriba a la sentència else, això vol dir que els temps no són iguals.

    if (time1 == time2) {System.out.println ("les dates són iguals"); } else {System.out.println ("les dates no són iguals"); // s'imprimirà des de temps1! = temps2}

Recomanat: