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