4 måter å sammenligne to datoer i Java

Innholdsfortegnelse:

4 måter å sammenligne to datoer i Java
4 måter å sammenligne to datoer i Java

Video: 4 måter å sammenligne to datoer i Java

Video: 4 måter å sammenligne to datoer i Java
Video: Как БЕСПЛАТНО сделать книгу KDP в твердом переплете 2024, April
Anonim

Det er forskjellige måter å sammenligne Java -datoer på. Internt er en dato representert som et (langt) tidspunkt - antall millisekunder som har gått siden 1. januar 1970. I Java er Date et objekt, noe som betyr at det inkluderer flere metoder for sammenligning. Enhver metode for å sammenligne to datoer vil i hovedsak sammenligne datoene.

Trinn

Metode 1 av 4: Bruke CompareTo

4301351 1
4301351 1

Trinn 1. Bruk CompareTo

Date implementes Comparable og to datoer kan derfor sammenlignes direkte med comparTo -metoden. Hvis datoene er for samme tidspunkt, returnerer metoden null. Hvis datoen som sammenlignes er før datoargumentet, returneres en verdi mindre enn null. Hvis datoen som sammenlignes er etter datoargumentet, returneres en verdi større enn null. Hvis datoene er like, returneres verdien 0.

4301351 2
4301351 2

Trinn 2. Lag datoobjektene

Du må opprette hvert datoobjekt før du kan begynne å sammenligne dem. En måte å gjøre dette på er å bruke SimpleDateFormat -klassen. Det gjør det enkelt å legge inn datoverdier i datoobjekter.

    SimpleDateFormat sdf = ny SimpleDateFormat ("åååå-MM-dd"); // For å deklarere verdier i nye datoobjekter. bruk samme datoformat når du oppretter 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

Trinn 3. Sammenlign datoobjektene

Koden nedenfor viser deg hvert tilfelle - mindre enn, lik og større enn.

    date1.compareTo (date2); // date1 <date2, returnerer mindre enn 0 date2.compareTo (date1); // date2> date1, returnerer større enn 0 date1.compareTo (date3); // date1 = date3, så vil skrive ut 0 til konsollen

Metode 2 av 4: Bruke lik, etter og før

4301351 4
4301351 4

Trinn 1. Bruk like, etter og før

Datoer kan sammenlignes med likeverdige, etter og før metoder. Hvis to datoer er for det samme tidspunktet, vil likemetoden returnere true. Eksemplene vil bruke tidligere opprettede datoer fra metoden CompareTo.

4301351 5
4301351 5

Trinn 2. Sammenlign med før -metoden

Koden nedenfor viser en sann og usann sak. Hvis date1 er før date2, før returnerer true. Hvis det ikke er det, returnerer det feil.

    System.out.print (date1.before (date2)); // skriver ut ekte System.out.print (date2.before (date2)); // skriver ut feil

4301351 6
4301351 6

Trinn 3. Sammenlign med etter -metoden

Koden nedenfor viser en sann og usann sak. Hvis date2 er etter date1, etter returnerer true. Hvis det ikke er det, er det feil retur etter retur.

    System.out.print (date2.after (date1)); // skriver ut ekte System.out.print (date1.after (date2)); // skriver ut usant

4301351 7
4301351 7

Trinn 4. Sammenlign med likemetoden

Koden nedenfor viser en sann og usann sak. Hvis datoene er like, returnerer lik sann. Hvis de ikke er det, returnerer lik falsk.

    System.out.print (date1.equals (date3)); // skriver ut ekte System.out.print (date1.equals (date2)); // skriver ut feil

Metode 3 av 4: Bruke kalenderklassen

4301351 8
4301351 8

Trinn 1. Bruk kalenderen

Kalenderklassen har også comparTo, lik, etter og før metoder som fungerer på samme måte som beskrevet ovenfor for datoklassen. Så hvis datoinformasjonen holdes i en kalender, er det ikke nødvendig å trekke ut datoen bare for å utføre en sammenligning.

4301351 9
4301351 9

Trinn 2. Lag forekomster av kalender

For å bruke kalendermetodene trenger du noen få kalenderforekomster. Heldigvis kan du bare ta tidene fra de allerede opprettede datoinstansene.

    Kalender cal1 = Calendar.getInstance (); // erklærer cal1 Kalender cal2 = Calendar.getInstance (); // erklærer cal2 Kalender cal3 = Calendar.getInstance (); // erklærer cal3 cal1.setTime (date1); // gjelder dato for cal1 cal2.setTime (date2); cal3.setTime (date3);

4301351 10
4301351 10

Trinn 3. Sammenlign cal1 og cal2 ved å bruke før

Koden nedenfor skal skrives ut sant siden cal1 er før cal2.

    System.out.print (cal1.before (cal2)); // vil skrive ut true

4301351 11
4301351 11

Trinn 4. Sammenlign cal1 og cal2 ved å bruke after

Koden nedenfor skal skrive ut falsk siden cal1 er før cal2.

    System.out.print (cal1.after (cal2)); // skriver ut feil

4301351 12
4301351 12

Trinn 5. Sammenlign cal1 og cal2 ved å bruke like

Koden nedenfor viser et eksempel på både en sann og usann sak. Tilstanden avhenger av at kalenderforekomsten blir sammenlignet. Koden skal skrive ut "true" og deretter "false" på neste linje.

    System.out.println (cal1.equals (cal3)); // skriver ut sant: cal1 == cal3 System.out.print (cal1.equals (cal2)); // skriver ut feil: cal1! = cal2

Metode 4 av 4: Bruke getTime

4301351 13
4301351 13

Trinn 1. Bruk getTime

Det er også mulig å sammenligne tidspunktet for to datoer direkte, selv om noen av de tidligere tilnærmingene sannsynligvis vil være mer lesbare og så å foretrekke. Dette vil være en sammenligning av to primitive datatyper, så det kan gjøres med "" og "==".

4301351 14
4301351 14

Trinn 2. Lag langtidens objekter

Før du kan sammenligne datoene, må du opprette lange heltall med dataene fra de tidligere opprettede datoobjektene. Heldigvis vil getTime () -metoden gjøre det meste av arbeidet for deg.

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

4301351 15
4301351 15

Trinn 3. Gjør en mindre enn sammenligning

Bruk symbolet mindre enn (<) for å sammenligne disse to heltallsverdiene. Siden tid1 er mindre enn tid 2, bør den første meldingen skrives ut. Den andre setningen er inkludert for riktig syntaks.

    if (time1 <time2) {System.out.println ("date1 is before date2"); // vil skrive ut siden time1 <time2} else {System.out.println ("date1 er ikke før date2"); }

4301351 16
4301351 16

Trinn 4. Gjør en større enn sammenligning

Bruk symbolet større enn (>) for å sammenligne disse to heltallsverdiene. Siden tid1 er større enn tid 2, bør den første meldingen skrives ut. Den andre setningen er inkludert for riktig syntaks.

    if (time2> time1) {System.out.println ("date2 is after date1"); // vil skrive ut siden time2> time1} else {System.out.println ("date2 is not after date1"); }

4301351 17
4301351 17

Trinn 5. Gjør en lik sammenligning

Bruk symbolet for å se etter likhet (==) for å sammenligne disse to heltallsverdiene for likhet. Siden tid1 er lik tid3, bør den første meldingen skrives ut. Hvis programmet kommer til den andre setningen, betyr det at tidene ikke er like.

    if (time1 == time2) {System.out.println ("datoene er like"); } annet {System.out.println ("datoene er ikke like"); // vil skrive ut siden time1! = time2}

Anbefalt: