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: Inkscape: How to Change Default Settings 2024, April
Anonim

Der er forskellige måder at sammenligne Java -datoer på. Internt er en dato repræsenteret som et (langt) tidspunkt - antallet af millisekunder, der er gået siden 1. januar 1970. I Java er Date et objekt, hvilket betyder, at det indeholder flere metoder til sammenligning. Enhver metode til at sammenligne to datoer vil i det væsentlige sammenligne datoernes tider.

Trin

Metode 1 af 4: Brug af comparTo

4301351 1
4301351 1

Trin 1. Brug CompareTo

Datoimplementerer sammenlignelig, så to datoer kan sammenlignes direkte med metoden CompareTo. Hvis datoerne er for det samme tidspunkt, returnerer metoden nul. Hvis den dato, der sammenlignes, er før datoargumentet, returneres en værdi mindre end nul. Hvis den dato, der sammenlignes, er efter datoargumentet, returneres en værdi større end nul. Hvis datoerne er ens, returneres værdien 0.

4301351 2
4301351 2

Trin 2. Opret datoobjekterne

Du skal oprette hvert datoobjekt, før du kan begynde at sammenligne dem. En måde at gøre dette på er at bruge klassen SimpleDateFormat. Det giver mulighed for let indtastning af datoværdier i datoobjekter.

    SimpleDateFormat sdf = ny SimpleDateFormat ("åååå-MM-dd"); // Til angivelse af værdier i nye datoobjekter. bruge samme datoformat, når du opretter datoer 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

Koden herunder viser dig hvert enkelt tilfælde - mindre end, lig og større end.

    date1.compareTo (date2); // date1 <date2, returnerer mindre end 0 date2.compareTo (date1); // date2> date1, returnerer større end 0 date1.compareTo (date3); // date1 = date3, så udskriver 0 til konsol

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 med de lige, efter og før metoder. Hvis to datoer er for det samme tidspunkt, returnerer metoden lig med sand. Eksemplerne vil bruge tidligere oprettede datoer fra metoden CompareTo.

4301351 5
4301351 5

Trin 2. Sammenlign med metoden før

Koden herunder viser en sand og falsk sag. Hvis date1 er før date2, før returnerer true. Hvis det ikke er, før returnerer falsk.

    System.out.print (date1.before (date2)); // udskriver true System.out.print (date2.before (date2)); // udskriver falsk

4301351 6
4301351 6

Trin 3. Sammenlign ved hjælp af efter -metoden

Koden herunder viser en sand og falsk sag. Hvis date2 er efter date1, efter returnerer true. Hvis det ikke er tilfældet, efter returnering falsk.

    System.out.print (date2.after (date1)); // udskriver true System.out.print (date1.after (date2)); // udskriver falsk

4301351 7
4301351 7

Trin 4. Sammenlign ved hjælp af ligemetoden

Koden herunder viser en sand og falsk sag. Hvis datoerne er ens, returnerer lig sand. Hvis de ikke er det, returnerer lig med falsk.

    System.out.print (date1.equals (date3)); // udskriver true System.out.print (date1.equals (date2)); // udskriver falsk

Metode 3 af 4: Brug af kalenderklassen

4301351 8
4301351 8

Trin 1. Brug kalenderen

Kalenderklassen har også comparTo, lig med, efter og før metoder, der fungerer på samme måde som beskrevet ovenfor for datoklassen. Så hvis datooplysningerne opbevares i en kalender, er det ikke nødvendigt at udtrække datoen bare for at foretage en sammenligning.

4301351 9
4301351 9

Trin 2. Opret forekomster af kalender

For at bruge kalendermetoderne skal du bruge et par kalenderforekomster. Heldigvis kan du bare få fat i tiderne fra de allerede oprettede datoinstanser.

    Kalender cal1 = Calendar.getInstance (); // erklærer cal1 Kalender cal2 = Calendar.getInstance (); // erklærer cal2 Kalender cal3 = Calendar.getInstance (); // erklærer cal3 cal1.setTime (date1); // anvender dato på cal1 cal2.setTime (date2); cal3.setTime (dato3);

4301351 10
4301351 10

Trin 3. Sammenlign cal1 og cal2 ved hjælp af før

Koden herunder skal udskrives true, da cal1 er før cal2.

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

4301351 11
4301351 11

Trin 4. Sammenlign cal1 og cal2 ved hjælp af after

Nedenstående kode skal udskrives falsk, da cal1 er før cal2.

    System.out.print (cal1.after (cal2)); // udskriver falsk

4301351 12
4301351 12

Trin 5. Sammenlign cal1 og cal2 ved hjælp af lig

Nedenstående kode viser et eksempel på både en sand og falsk sag. Betingelsen afhænger af, at kalenderinstanserne sammenlignes. Koden skal udskrive "sand" og derefter "falsk" på den næste linje.

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

Metode 4 af 4: Brug af getTime

4301351 13
4301351 13

Trin 1. Brug getTime

Det er også muligt direkte at sammenligne tidspunktet for to datoer, selvom en af de tidligere tilgange sandsynligvis vil være mere læsbar og så at foretrække. Dette vil være en sammenligning af to primitive datatyper, så det kan gøres med "" og "==".

4301351 14
4301351 14

Trin 2. Opret lang tid objekter

Før du kan sammenligne datoerne, skal du oprette lange heltal med dataene fra de tidligere oprettede datoobjekter. Heldigvis vil metoden getTime () gøre det meste af arbejdet for dig.

    lang tid1 = getTime (dato1); // erklærer primitiv tid1 fra dato1 lang tid2 = getTime (dato2); // erklærer primitiv tid2 fra dato2

4301351 15
4301351 15

Trin 3. Gør en mindre end sammenligning

Brug symbolet mindre end (<) til at sammenligne disse to heltalsværdier. Da tid1 er mindre end tid 2, skal den første meddelelse udskrives. Den anden sætning er inkluderet for korrekt syntaks.

    hvis (time1 <time2) {System.out.println ("date1 er før date2"); // vil udskrive siden time1 <time2} else {System.out.println ("date1 er ikke før date2"); }

4301351 16
4301351 16

Trin 4. Gør en større end sammenligning

Brug symbolet større end (>) til at sammenligne disse to heltalsværdier. Da tid1 er større end tid 2, skal den første meddelelse udskrives. Den anden sætning er inkluderet for korrekt syntaks.

    hvis (tid2> tid1) {System.out.println ("dato2 er efter dato1"); // vil udskrive siden time2> time1} else {System.out.println ("date2 er ikke efter date1"); }

4301351 17
4301351 17

Trin 5. Lav en ligelig sammenligning

Brug symbolet til at kontrollere lighed (==) for at sammenligne disse to heltalsværdier for lighed. Da tid1 er lig med tid3, skal den første besked udskrives. Hvis programmet kommer til den anden sætning, betyder det, at tiderne ikke er ens.

    hvis (time1 == time2) {System.out.println ("datoerne er ens"); } ellers {System.out.println ("datoerne er ikke ens"); // udskrives siden time1! = time2}

Anbefalede: