Der er mange måder at sammenligne to datoer på Java -programmeringssproget. I computere repræsenteres en dato med et tal (datatypen Long) i tidsenheder - det vil sige antallet af millisekunder, der er gået siden 1. januar 1970. I Java er Date et objekt, hvilket betyder, at det har flere metoder til sammenligning. Enhver metode, der bruges til at sammenligne to datoer, er i det væsentlige at sammenligne tidsenhederne for de to datoer.
Trin
Metode 1 af 4: Brug af comparTo
Trin 1. Brug CompareTo
Date -objektet implementerer Comparable, så 2 datoer kan sammenlignes direkte med hinanden med comparTo -metoden. Hvis begge datoer har det samme antal i tidsenheder, returnerer metoden nul. Hvis den anden dato er mindre end den første, returneres en værdi mindre end nul. Hvis den anden dato er større end den første, returnerer metoden en værdi, der er større end nul. Hvis begge datoer er ens, returnerer metoden en nullværdi.
Trin 2. Opret flere datoobjekter
Du skal oprette flere datoobjekter, før du sammenligner dem. En af de nemmeste måder at gøre dette på er at bruge klassen SimpleDateFormat. Denne klasse gør det let at konvertere en inputdatoværdi til et Date -objekt.
SimpleDateFormat sdf = ny SimpleDateFormat ("åååå-MM-dd"). For at deklarere en værdi i en ny '' Objektdato '' skal du bruge det samme datoformat, når du opretter datoen. Dato dato1 = sdf.parse ("1995-02-23"); // dato1 er 23. februar 1995 Dato dato2 = sdf.parse ("2001-10-31"); // dato2 er 31. oktober 2001 Dato dato3 = sdf.parse ("1995-02-23"); // date3 er 23. februar 1995
Trin 3. Sammenlign datoobjekterne
Følgende kode viser dig eksempler for hvert tilfælde - mindre end, lige og større end.
date1.compareTo (date2); // date1 <date2, returnerer en værdi mindre end 0 date2.compareTo (date1); // date2> date1, returnerer en værdi større end 0 date1.compareTo (date3); // date1 = date3, så det udsender 0 på konsollen
Metode 2 af 4: Brug af lig, efter og før
Trin 1. Brug lige, efter og før
Datoer kan sammenlignes ved hjælp af metoderne lig, efter og før. Hvis to datoer har den samme værdi i tid, returnerer metoden lig med sand. Følgende eksempel vil bruge datoobjektet, der er oprettet i eksempel -sammenligningsmetoden.
Trin 2. Sammenlign med metoden før
Følgende kode viser et eksempel på tilfælde, der returnerer sandt og falsk. Hvis dato1 er en dato før dato2, returnerer metoden før sand. Ellers returnerer metoden før falsk.
System.out.print (date1.before (date2)); // vis værdien '' true '' System.out.print (date2.before (date2)); // returner værdien '' false ''
Trin 3. Sammenlign ved hjælp af eftermetoden
Følgende kode viser et eksempel på et tilfælde, der returnerer sandt og falsk. Hvis dato2 er datoen efter dato1, returnerer eftermetoden sand. Ellers returnerer eftermetoden falsk.
System.out.print (date2.after (date1)); // vis værdien '' true '' System.out.print (date1.after (date2)); // vis værdien '' false ''
Trin 4. Sammenlign med ligemetoden
Følgende kode viser et eksempel på tilfælde, der returnerer sandt og falsk. Hvis begge datoer er ens, returnerer metoden lig med sand. Ellers returnerer metoden lig med falsk.
System.out.print (date1.equals (date3)); // vis værdien '' true '' System.out.print (date1.equals (date2)); // vis værdien '' false ''
Metode 3 af 4: Brug af klassekalender
Trin 1. Brug klassekalender
Kalenderklassen har også comparTo, lig med, efter og før metoder, der fungerer på samme måde som dem, der er beskrevet tidligere for datoklassen. Så hvis datooplysningerne er gemt i en klassekalender, behøver du ikke udtrække datoen bare for at foretage en sammenligning.
Trin 2. Opret en forekomst af Kalender
Hvis du vil bruge metoder i klassekalender, skal du oprette flere kalenderforekomster. Heldigvis kan du bruge værdierne fra en tidligere oprettet Date -forekomst.
Kalender cal1 = Calendar.getInstance (); // erklære cal1 Kalender cal2 = Calendar.getInstance (); // erklære cal2 Kalender cal3 = Calendar.getInstance (); // erklære cal3 cal1.setTime (date1); // indsæt datoen i cal1 cal2.setTime (date2); cal3.setTime (dato3);
Trin 3. Sammenlign cal1 og cal2 ved hjælp af metoden før
Følgende kode udsender værdien af tr
System.out.print (cal1.before (cal2)); // returnerer værdien '' sand ''
Trin 4. Sammenlign cal1 og cal2 ved hjælp af eftermetoden
Følgende kode returnerer falsk, fordi cal1 er datoen før cal2.
System.out.print (cal1.after (cal2)); // returner værdien '' false ''
Trin 5. Sammenlign cal1 og cal2 ved hjælp af metoden equals
Følgende kode viser et eksempel på tilfælde, der returnerer true og false. Tilstanden afhænger af, at kalenderforekomsten sammenlignes. Følgende kode returnerer værdien "true" og derefter "false" på den næste linje.
System.out.println (cal1.equals (cal3)); // returner værdien '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // returner værdien '' false '': cal1! = cal2
Metode 4 af 4: Brug af getTime
Trin 1. Brug getTime
Du kan også direkte sammenligne tidsenhedsværdierne for to datoer, selvom de to foregående metoder kan være lettere at læse og foretrække. På denne måde vil du sammenligne 2 primitive datatyper, så du kan bruge operanderne "" og "==".
Trin 2. Opret et tidsobjekt i formatet Langt tal
Inden du kan sammenligne datoer, skal du oprette en lang heltalværdi fra det tidligere oprettede datoobjekt. Heldigvis vil getTime () -metoden gøre det for dig.
lang tid1 = getTime (dato1); // erklær primitiv tid1 af dato1 lang tid2 = getTime (dato2); // erklær primitiv time2 værdi af dato2
Trin 3. Udfør en mindre end sammenligning
Brug operandens mindre end (<) til at sammenligne disse to heltalsværdier. Da tid1 er mindre end tid2, vises den første meddelelse. Den anden sætning er inkluderet for at fuldføre syntaksen.
hvis (time1 <time2) {System.out.println ("date1 er datoen før date2"); // vises, fordi time1 <time2} else {System.out.println ("date1 er ikke en dato før date2"); }
Trin 4. Udfør en større end sammenligning
Brug operanden større end (>) til at sammenligne disse to heltalsværdier. Fordi tid1 er større end tid2, vises den første meddelelse. Den anden sætning er inkluderet for at fuldføre syntaksen.
hvis (time2> time1) {System.out.println ("date2 er datoen efter date1"); // vises fordi time2> time1} else {System.out.println ("date2 er ikke datoen efter date1"); }
Trin 5. Udfør en ligelig sammenligning
Brug operand -funktionen til at kontrollere værdiernes lighed (==) for at sammenligne disse to heltal. Da tid1 er lig med tid3, vises den første meddelelse. Hvis programflowet går ind i den anden sætning, betyder det, at de to gange ikke har den samme værdi.
hvis (time1 == time2) {System.out.println ("begge datoer er ens"); } ellers {System.out.println ("Den første er ikke den samme som den anden"); // vises, fordi time1! = time2}