Java -päivämääriä voi verrata eri tavoin. Sisäisesti päivämäärä esitetään (pitkänä) ajankohtana - tammikuun 1. päivän 1970 jälkeen kuluneiden millisekuntien lukumäärä. Javassa Päivämäärä on objekti, mikä tarkoittaa, että se sisältää useita vertailumenetelmiä. Mikä tahansa tapa verrata kahta päivämäärää vertaa olennaisesti päivämäärien aikoja.
Askeleet
Tapa 1/4: Vertailu
Vaihe 1. Käytä vertaa
Päivämäärä toteutetaan Vertailukelpoinen, joten kahta päivämäärää voidaan verrata suoraan vertailu -menetelmään. Jos päivämäärät ovat samaa ajankohtaa, menetelmä palauttaa nollan. Jos vertailtava päivämäärä on ennen päivämäärä -argumenttia, arvo palautetaan alle nolla. Jos vertailtava päivämäärä on päivämäärä -argumentin jälkeen, palautetaan nollaa suurempi arvo. Jos päivämäärät ovat samat, arvo 0 palautetaan.
Vaihe 2. Luo päivämääräobjektit
Sinun on luotava jokainen päivämääräobjekti, ennen kuin voit alkaa vertailla niitä. Yksi tapa tehdä tämä on käyttää SimpleDateFormat -luokkaa. Se mahdollistaa päivämääräarvojen helpon syöttämisen päivämääräobjekteihin.
SimpleDateFormat sdf = uusi SimpleDateFormat ("yyyy-MM-dd"); // Arvojen ilmoittamiseen uusissa päivämääräobjekteissa. käytä samaa päivämäärämuotoa päivämääriä luodessasi Date date1 = sdf.parse ("1995-02-23"); // päivämäärä1 on 23. helmikuuta 1995 Päivämääräpäivä2 = sdf.parse ("2001-10-31"); // päivämäärä2 on 31. lokakuuta 2001 Päivämääräpäivä3 = sdf.parse ("1995-02-23"); // päivämäärä3 on 23. helmikuuta 1995
Vaihe 3. Vertaa päivämääräobjekteja
Alla oleva koodi näyttää jokaisen tapauksen - pienempi, yhtä suuri ja suurempi kuin.
date1.compareTo (päivämäärä2); // päivämäärä1 <päivämäärä2, palauttaa alle 0 päivämäärä2.compareTo (päivämäärä1); // päivämäärä2> päivämäärä1, palauttaa suuremman kuin 0 date1.compareTo (date3); // päivämäärä1 = päivämäärä3, joten tulostetaan 0 konsoliin
Menetelmä 2/4: Yhtäläisten, jälkeen ja ennen käyttöä
Vaihe 1. Käytä yhtä kuin, jälkeen ja ennen
Päivämääriä voidaan verrata yhtäläisiin, jälkeen ja ennen menetelmiä. Jos kaksi päivämäärää koskevat samaa ajankohtaa, yhtälö -menetelmä palauttaa arvon tosi. Esimerkit käyttävät aikaisemmin luotuja päivämääriä vertailumenetelmästä.
Vaihe 2. Vertaa edellisellä menetelmällä
Alla oleva koodi näyttää oikean ja väärän tapauksen. Jos päivämäärä1 on ennen päivämäärää2, ennen palauttaa arvon tosi. Jos ei, palauttaa ennen arvoa false.
System.out.print (date1.before (date2)); // tulostaa todellisen System.out.print (date2.before (date2)); // tulostaa epätosi
Vaihe 3. Vertaa käyttämällä jälkimenetelmää
Alla oleva koodi näyttää oikean ja väärän tapauksen. Jos päivämäärä2 on päivämäärän1 jälkeen, palauttaa sen jälkeen tosi. Jos ei ole, palauttaa epätosi.
System.out.print (date2.after (date1)); // tulostaa true System.out.print (date1.after (date2)); // tulostaa false
Vaihe 4. Vertaa yhtälömenetelmää käyttäen
Alla oleva koodi näyttää oikean ja väärän tapauksen. Jos päivämäärät ovat samat, yhtälö palauttaa arvon tosi. Jos ne eivät ole, yhtälö palauttaa arvon epätosi.
System.out.print (date1.equals (date3)); // tulostaa true System.out.print (date1.equals (date2)); // tulostaa false
Tapa 3/4: Kalenteriluokan käyttö
Vaihe 1. Käytä kalenteria
Kalenteriluokassa on myös vertailumuoto, yhtä kuin, jälkeen ja ennen menetelmiä, jotka toimivat samalla tavalla kuin edellä päivämääräluokalle on kuvattu. Joten jos päivämäärätietoja säilytetään kalenterissa, päivämäärää ei tarvitse poimia vain vertailun suorittamiseksi.
Vaihe 2. Luo kalenterin esiintymiä
Kalenterimenetelmien käyttämiseen tarvitset muutamia kalenteritapauksia. Onneksi voit vain napata kellonajat jo luotuista päivämääräesineistä.
Kalenteri cal1 = Calendar.getInstance (); // ilmoittaa cal1 Kalenteri cal2 = Calendar.getInstance (); // ilmoittaa cal2 Kalenteri cal3 = Calendar.getInstance (); // ilmoittaa cal3 cal1.setTime (date1); // koskee päivämäärää cal1 cal2.setTime (date2); cal3.setTime (päivämäärä3);
Vaihe 3. Vertaa cal1 ja cal2 käyttämällä aiemmin
Alla olevan koodin pitäisi tulostaa tosi, koska cal1 on ennen cal2.
System.out.print (cal1.before (cal2)); // tulostaa totta
Vaihe 4. Vertaa cal1 ja cal2 käyttämällä after
Alla olevan koodin pitäisi tulostaa epätosi, koska cal1 on ennen cal2.
System.out.print (cal1.after (cal2)); // tulostaa epätosi
Vaihe 5. Vertaa cal1 ja cal2 käyttäen yhtäsuuria
Alla oleva koodi näyttää esimerkin sekä oikeasta että väärästä tapauksesta. Ehto riippuu vertailtavista kalenterikohteista. Koodin pitäisi tulostaa "true" ja sitten "false" seuraavalle riville.
System.out.println (cal1.equals (cal3)); // tulostaa tosi: cal1 == cal3 System.out.print (cal1.equals (cal2)); // tulostaa väärin: cal1! = cal2
Tapa 4/4: GetTimen käyttäminen
Vaihe 1. Käytä getTime -ohjelmaa
On myös mahdollista verrata suoraan kahden päivämäärän ajankohtaa, vaikka mikä tahansa aikaisemmista lähestymistavoista on todennäköisesti luettavampi ja siten parempi. Tämä on kahden primitiivisen tietotyypin vertailu, joten se voidaan tehdä "" ja "==".
Vaihe 2. Luo pitkäaikaiset objektit
Ennen kuin voit verrata päivämääriä, sinun on luotava pitkiä kokonaislukuja aiemmin luotujen päivämääräobjektien tietojen kanssa. Onneksi getTime () -menetelmä tekee suurimman osan työstä puolestasi.
pitkä aika1 = getTime (päivämäärä1); // ilmoittaa primitiivisen ajan1 päivämäärästä1 pitkä aika2 = getTime (päivämäärä2); // ilmoittaa primitiivisen ajan2 päivämäärästä2
Vaihe 3. Tee vähemmän kuin vertailu
Vertaa näitä kahta kokonaislukua pienemmällä symbolilla (<). Koska aika1 on lyhyempi kuin aika 2, ensimmäinen viesti tulostetaan. Muu lause sisältyy oikeaan syntaksiin.
if (aika1 <aika2) {System.out.println ("date1 is before date2"); // tulostaa aika1 <aika2} else {System.out.println ("date1 is not before date2"); }
Vaihe 4. Tee suurempi kuin vertailu
Vertaa näitä kahta kokonaislukua suuremmalla symbolilla (>). Koska aika1 on pidempi kuin aika 2, ensimmäinen viesti tulostetaan. Muu lause sisältyy oikeaan syntaksiin.
if (aika2> aika1) {System.out.println ("päivämäärä2 on päivämäärän1 jälkeen"); // tulostaa aika2> aika1} else {System.out.println ("päivämäärä2 ei ole päivämäärän1 jälkeen"); }
Vaihe 5. Vertaa yhtä
Käytä symbolia tasaisuuden tarkistamiseen (==) vertaillaksesi näitä kahta kokonaislukua. Koska aika1 on sama kuin aika3, ensimmäinen viesti tulostetaan. Jos ohjelma pääsee else -lauseeseen, ajat eivät ole yhtä suuret.
if (aika1 == aika2) {System.out.println ("päivämäärät ovat samat"); } else {System.out.println ("päivämäärät eivät ole samat"); // tulostetaan aika1! = aika2}