4 måder at sammenligne to datoer i Java

Indholdsfortegnelse:

4 måder at sammenligne to datoer i Java
4 måder at sammenligne to datoer i Java

Video: 4 måder at sammenligne to datoer i Java

Video: 4 måder at sammenligne to datoer i Java
Video: Рефакторинг: switch vs if-else vs enum vs HashMap [Шаблон "Команда"] 2024, December
Anonim

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

4301351 1
4301351 1

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.

4301351 2
4301351 2

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

4301351 3
4301351 3

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

4301351 4
4301351 4

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.

4301351 5
4301351 5

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 ''

4301351 6
4301351 6

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 ''

4301351 7
4301351 7

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

4301351 8
4301351 8

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.

4301351 9
4301351 9

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

4301351 10
4301351 10

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 ''

4301351 11
4301351 11

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 ''

4301351 12
4301351 12

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

4301351 13
4301351 13

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

4301351 14
4301351 14

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

4301351 15
4301351 15

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

4301351 16
4301351 16

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

4301351 17
4301351 17

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}

Anbefalede: