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