Postoji mnogo načina za usporedbu dva datuma u programskom jeziku Java. U računalima je datum predstavljen brojem (tip podataka Long) u jedinicama vremena - to jest, broju milisekundi koje su protekle od 1. siječnja 1970. U Javi je Date objekt, što znači da ima nekoliko metoda za uspoređivanje. Svaka metoda koja se koristi za usporedbu dva datuma u biti je usporedba vremenskih jedinica dvaju datuma.
Korak
Metoda 1 od 4: Korištenje compareTo
Korak 1. Upotrijebite compareTo
Objekt Date implementira Comparable pa se 2 datuma mogu međusobno usporediti izravno metodom compareTo. Ako oba datuma imaju isti broj u vremenskim jedinicama, tada metoda vraća nulu. Ako je drugi datum manji od prvog, vraća se vrijednost manja od nule. Ako je drugi datum veći od prvog, metoda vraća vrijednost veću od nule. Ako su oba datuma jednaka, metoda će vratiti nultu vrijednost.
Korak 2. Izradite više objekata Date
Prije usporedbe morate stvoriti više objekata Date. Jedan od najjednostavnijih načina za to je korištenje klase SimpleDateFormat. Ova klasa olakšava pretvaranje vrijednosti datuma unosa u objekt Date.
SimpleDateFormat sdf = novi SimpleDateFormat ("gggg-MM-dd"). Za deklariranje vrijednosti u novom '' Object Date '', koristite isti format datuma prilikom stvaranja datuma. Datum datum1 = sdf.parse ("1995-02-23"); // datum1 je 23. veljače 1995. Datum datum2 = sdf.parse ("2001-10-31"); // datum2 je 31. listopada 2001. Datum datum3 = sdf.parse ("1995-02-23"); // datum3 je 23. veljače 1995. godine
Korak 3. Usporedite objekte Date
Sljedeći kôd pokazat će vam primjere za svaki slučaj - manji od, jednaki i veći od.
date1.compareTo (date2); // date1 <date2, vraća vrijednost manju od 0 date2.compareTo (date1); // date2> date1, vraća vrijednost veću od 0 date1.compareTo (date3); // date1 = date3, pa će ispisati 0 na konzoli
Metoda 2 od 4: Korištenje jednakosti, nakon i prije
Korak 1. Koristite jednako, nakon i prije
Datumi se mogu usporediti pomoću metoda jednaki, poslije i prije. Ako dva datuma imaju istu vrijednost u vremenu, metoda equals vraća vrijednost true. Sljedeći će primjer koristiti objekt Date kreiran u primjeru metode compareTo.
Korak 2. Usporedite s prethodnom metodom
Sljedeći kôd prikazuje primjer slučaja koji vraća true i false. Ako je date1 datum prije date2, metoda before vraća true. U suprotnom, metoda before vraća false.
System.out.print (datum1.prije (datum2)); // prikazuje vrijednost '' true '' System.out.print (date2.before (date2)); // vraća vrijednost '' false ''
Korak 3. Usporedite metodom after
Sljedeći kôd prikazuje primjer slučaja koji vraća true i false. Ako je date2 datum nakon date1, metoda after vraća true. U suprotnom će se metoda after vratiti false.
System.out.print (date2.after (date1)); // prikazuje vrijednost '' true '' System.out.print (date1.after (date2)); // prikazuje vrijednost '' false ''
Korak 4. Usporedite s metodom equals
Sljedeći kôd prikazuje primjer slučaja koji vraća true i false. Ako su oba datuma jednaka, metoda equals vraća vrijednost true. Inače, metoda equals vraća false.
System.out.print (date1.equals (date3)); // prikazuje vrijednost '' true '' System.out.print (date1.equals (date2)); // prikazuje vrijednost '' false ''
Metoda 3 od 4: Korištenje kalendara razreda
Korak 1. Upotrijebite Kalendar razreda
Klasa Kalendar također ima metode compareTo, equals, after i before koje rade isto kao i one opisane ranije za klasu Date. Dakle, ako su podaci o datumu pohranjeni u kalendaru razreda, ne morate izdvajati datum samo radi usporedbe.
Korak 2. Izradite instancu kalendara
Da biste koristili metode u Kalendaru razreda, morate stvoriti više instanci Kalendara. Srećom, možete koristiti vrijednosti iz prethodno kreirane instance Date.
Kalendar cal1 = Calendar.getInstance (); // proglašava cal1 Kalendar cal2 = Calendar.getInstance (); // proglašava cal2 Kalendar cal3 = Calendar.getInstance (); // proglašava cal3 cal1.setTime (date1); // stavlja datum u cal1 cal2.setTime (date2); cal3.setTime (date3);
Korak 3. Usporedite cal1 i cal2 koristeći prethodnu metodu
Sljedeći kôd će ispisati vrijednost tr
System.out.print (cal1.before (cal2)); // vratit će vrijednost "true"
Korak 4. Usporedite cal1 i cal2 pomoću metode after
Sljedeći će kôd vratiti false jer je cal1 datum prije cal2.
System.out.print (cal1.after (cal2)); // vraća vrijednost '' false ''
Korak 5. Usporedite cal1 i cal2 koristeći metodu equals
Sljedeći kôd pokazat će primjer slučaja koji vraća true i false. Stanje ovisi o instanci kalendara koja se uspoređuje. Sljedeći kôd vratit će vrijednost "true", a zatim "false" u sljedećem retku.
System.out.println (cal1.equals (cal3)); // vraća vrijednost '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // vraća vrijednost '' false '': cal1! = cal2
Metoda 4 od 4: Korištenje getTime
Korak 1. Upotrijebite getTime
Također možete izravno usporediti vrijednosti vremenskih jedinica dvaju datuma, iako su prethodne dvije metode lakše za čitanje i poželjnije. Na ovaj ćete način uspoređivati 2 primitivna tipa podataka, pa možete koristiti operande "" i "==".
Korak 2. Izradite vremenski objekt u formatu dugog broja
Prije nego što možete usporediti datume, morate stvoriti vrijednost Long Integer iz prethodno stvorenog objekta Date. Srećom, metoda getTime () će to učiniti umjesto vas.
long time1 = getTime (date1); // deklariramo primitivno vrijeme1 datuma1 dugo vrijeme2 = getTime (datum2); // proglasiti primitive time2 vrijednost date2
Korak 3. Izvedite manje od usporedbe
Upotrijebite operand manji od (<) za usporedbu ove dvije cijele vrijednosti. Budući da je vrijeme1 manje od vremena2, pojavit će se prva poruka. Naredba else uključena je za dovršetak sintakse.
if (time1 <time2) {System.out.println ("date1 je datum prije date2"); // prikazat će se jer time1 <time2} else {System.out.println ("datum1 nije datum prije datuma2"); }
Korak 4. Izvedite više od usporedbe
Za usporedbu ove dvije vrijednosti cijelog broja upotrijebite operand veći od (>). Budući da je vrijeme1 veće od vremena2, pojavit će se prva poruka. Naredba else uključena je za dovršetak sintakse.
if (time2> time1) {System.out.println ("datum2 je datum nakon datuma1"); // prikazat će se jer time2> time1} else {System.out.println ("datum2 nije datum nakon datuma1"); }
Korak 5. Izvršite usporedbu jednaki
Upotrijebite funkciju operand za provjeru jednakosti vrijednosti (==) za usporedbu ova dva cijela broja. Budući da je vrijeme1 jednako vremenu3, pojavit će se prva poruka. Ako tok programa ide u izraz else, to znači da dva puta nemaju istu vrijednost.
if (time1 == time2) {System.out.println ("oba datuma su ista"); } else {System.out.println ("Prvi nije isti kao drugi"); // prikazat će se jer vrijeme1! = vrijeme2}