Det er mange måter å sammenligne to datoer på Java -programmeringsspråket. På datamaskiner er en dato representert med et tall (datatypen Long) i tidsenheter - det vil si antall millisekunder som har gått siden 1. januar 1970. I Java er Date et objekt, noe som betyr at det har flere metoder for å gjøre sammenligninger. Enhver metode som brukes for å sammenligne to datoer, sammenligner i hovedsak tidsenhetene til de to datoene.
Steg
Metode 1 av 4: Bruke CompareTo
Trinn 1. Bruk CompareTo
Date -objektet implementerer Comparable slik at to datoer kan sammenlignes med hverandre direkte med comparTo -metoden. Hvis begge datoene har samme antall i tidsenheter, returnerer metoden null. Hvis den andre datoen er mindre enn den første, returneres en verdi mindre enn null. Hvis den andre datoen er større enn den første, returnerer metoden en verdi som er større enn null. Hvis begge datoene er like, returnerer metoden en nullverdi.
Trinn 2. Lag flere datoobjekter
Du må opprette flere datoobjekter før du sammenligner dem. En av de enkleste måtene å gjøre dette på er å bruke SimpleDateFormat -klassen. Denne klassen gjør det enkelt å konvertere en inngangsdatoverdi til et datoobjekt.
SimpleDateFormat sdf = ny SimpleDateFormat ("åååå-MM-dd"). For å deklarere en verdi i en ny '' Objektdato '', bruk samme datoformat når du oppretter datoen. Dato date1 = 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
Trinn 3. Sammenlign datoobjektene
Følgende kode viser deg eksempler for hvert tilfelle - mindre enn, lik og større enn.
date1.compareTo (date2); // date1 <date2, returnerer en verdi mindre enn 0 date2.compareTo (date1); // date2> date1, returnerer en verdi større enn 0 date1.compareTo (date3); // date1 = date3, så det kommer ut 0 på konsollen
Metode 2 av 4: Bruke lik, etter og før
Trinn 1. Bruk like, etter og før
Datoer kan sammenlignes ved hjelp av metodene lik, etter og før. Hvis to datoer har samme verdi i tid, returnerer likemetoden true. Følgende eksempel vil bruke datoobjektet som ble opprettet i eksempelet sammenligne til -metoden.
Trinn 2. Sammenlign med metoden før
Følgende kode viser et eksempel på et tilfelle som returnerer true og false. Hvis dato1 er en dato før dato2, returnerer før -metoden true. Ellers returnerer før -metoden falsk.
System.out.print (date1.before (date2)); // vise verdien '' true '' System.out.print (date2.before (date2)); // returner verdien '' false ''
Trinn 3. Sammenlign med etter -metoden
Følgende kode viser et eksempel på et tilfelle som returnerer true og false. Hvis dato2 er datoen etter dato1, returnerer ettermetoden true. Ellers vil ettermetoden returnere usann.
System.out.print (date2.after (date1)); // vis verdien '' true '' System.out.print (date1.after (date2)); // vis verdien '' false ''
Trinn 4. Sammenlign med lik metode
Følgende kode viser et eksempel på et tilfelle som returnerer true og false. Hvis begge datoene er like, returnerer likemetoden true. Ellers returnerer likemetoden falsk.
System.out.print (date1.equals (date3)); // vis verdien '' true '' System.out.print (date1.equals (date2)); // vis verdien '' false ''
Metode 3 av 4: Bruke klassekalender
Trinn 1. Bruk klassekalender
Kalenderklassen har også sammenlignings -til, lik, etter og før metoder som fungerer på samme måte som de som er beskrevet tidligere for Dato -klassen. Så hvis datoinformasjonen er lagret i en klassekalender, trenger du ikke trekke ut datoen bare for å gjøre en sammenligning.
Trinn 2. Lag en forekomst av Kalender
For å bruke metoder i klassekalenderen må du opprette flere kalenderforekomster. Heldigvis kan du bruke verdiene fra en tidligere opprettet Date -forekomst.
Kalender cal1 = Calendar.getInstance (); // deklar cal1 Kalender cal2 = Calendar.getInstance (); // deklar cal2 Kalender cal3 = Calendar.getInstance (); // deklar cal3 cal1.setTime (date1); // legg inn datoen i cal1 cal2.setTime (date2); cal3.setTime (date3);
Trinn 3. Sammenlign cal1 og cal2 ved å bruke metoden før
Følgende kode sender ut verdien til tr
System.out.print (cal1.before (cal2)); // vil returnere verdien '' true ''
Trinn 4. Sammenlign cal1 og cal2 ved hjelp av ettermetoden
Følgende kode vil returnere false fordi cal1 er datoen før cal2.
System.out.print (cal1.after (cal2)); // returner verdien '' false ''
Trinn 5. Sammenlign cal1 og cal2 ved hjelp av metoden lik
Følgende kode viser et eksempel på et tilfelle som returnerer true og false. Staten avhenger av at kalenderforekomsten blir sammenlignet. Følgende kode vil returnere verdien "true", deretter "false" på neste linje.
System.out.println (cal1.equals (cal3)); // returner verdien '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // returner verdien '' false '': cal1! = cal2
Metode 4 av 4: Bruke getTime
Trinn 1. Bruk getTime
Du kan også sammenligne tidsenhetsverdiene for to datoer direkte, selv om de to foregående metodene kan være lettere å lese og å foretrekke. På denne måten vil du sammenligne to primitive datatyper, slik at du kan bruke operandene "" og "==".
Trinn 2. Lag et tidsobjekt i langt tallformat
Før du kan sammenligne datoer, må du opprette en verdi for langt helhet fra det tidligere opprettede datoobjektet. Heldigvis vil getTime () -metoden gjøre det for deg.
long time1 = getTime (date1); // erklær primitiv tid1 av dato1 lang tid2 = getTime (dato2); // erklær primitiv tid2 verdi av dato2
Trinn 3. Utfør en mindre enn sammenligning
Bruk mindre enn (<) operand for å sammenligne disse to heltallsverdiene. Siden tid1 er mindre enn tid2, vises den første meldingen. Den andre setningen er inkludert for å fullføre syntaksen.
if (time1 <time2) {System.out.println ("date1 er datoen før date2"); // vil vises fordi tid1 <tid2} annet {System.out.println ("dato1 er ikke en dato før dato2"); }
Trinn 4. Utfør en større enn sammenligning
Bruk operand større enn (>) til å sammenligne disse to heltallsverdiene. Fordi tid1 er større enn tid2, vises den første meldingen. Den andre setningen er inkludert for å fullføre syntaksen.
if (time2> time1) {System.out.println ("date2 er datoen etter date1"); // vil vises fordi time2> time1} else {System.out.println ("date2 er ikke datoen etter date1"); }
Trinn 5. Utfør en lik sammenligning
Bruk operand -funksjonen til å kontrollere likheten mellom verdier (==) for å sammenligne disse to heltallene. Siden tid1 er lik tid3, vises den første meldingen. Hvis programflyten går inn i annet -setningen, betyr det at de to gangene ikke har samme verdi.
if (time1 == time2) {System.out.println ("begge datoene er like"); } annet {System.out.println ("Den første er ikke den samme som den andre"); // vises fordi time1! = time2}