On monia tapoja verrata kahta päivämäärää Java -ohjelmointikielellä. Tietokoneissa päivämäärää edustaa luku (tietotyyppi Long) ajan yksiköissä - eli millisekuntien lukumäärä, joka on kulunut 1. tammikuuta 1970. Java: ssa Päivämäärä on objekti, mikä tarkoittaa, että sillä on useita menetelmiä vertailun tekemiseen. Mikä tahansa menetelmä, jota käytetään kahden päivämäärän vertaamiseen, on olennaisesti kahden päivämäärän aikayksiköiden vertailu.
Vaihe
Tapa 1/4: Vertailu
Vaihe 1. Käytä vertaa
Päivämääräobjekti toteuttaa vertailukelpoisen, joten kahta päivämäärää voidaan verrata toisiinsa suoraan vertailu -menetelmällä. Jos molemmilla päivämäärillä on sama määrä aikayksiköissä, menetelmä palauttaa nollan. Jos toinen päivämäärä on pienempi kuin ensimmäinen, palautetaan arvo, joka on pienempi kuin nolla. Jos toinen päivämäärä on suurempi kuin ensimmäinen, menetelmä palauttaa arvon, joka on suurempi kuin nolla. Jos molemmat päivämäärät ovat samat, menetelmä palauttaa nolla -arvon.
Vaihe 2. Luo useita päivämääräobjekteja
Sinun on luotava useita päivämääräobjekteja ennen niiden vertaamista. Yksi helpoimmista tavoista tehdä tämä on käyttää SimpleDateFormat -luokkaa. Tämän luokan avulla on helppo muuntaa syötetty päivämääräarvo päivämääräobjektiksi.
SimpleDateFormat sdf = uusi SimpleDateFormat ("yyyy-MM-dd"). Jos haluat ilmoittaa arvon uudessa Objektin päivämäärä -kohdassa, käytä samaa päivämäärämuotoa päivämäärää luodessasi. Päivämäärä päivämäärä1 = 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
Seuraava koodi näyttää esimerkkejä kustakin tapauksesta - pienempi, yhtä suuri ja suurempi kuin.
date1.compareTo (päivämäärä2); // päivämäärä1 <päivämäärä2, palauttaa arvon, joka on pienempi kuin 0 date2.compareTo (date1); // date2> date1, palauttaa arvon, joka on suurempi kuin 0 date1.compareTo (date3); // päivämäärä1 = päivämäärä3, joten se tulostaa 0 konsolissa
Tapa 2/4: Yhtäläisten käyttäminen, jälkeen ja ennen
Vaihe 1. Käytä yhtä kuin, jälkeen ja ennen
Päivämääriä voidaan verrata käyttämällä yhtä, jälkeen ja ennen -menetelmiä. Jos kahdella päivämäärällä on sama arvo ajassa, yhtälö -menetelmä palauttaa arvon tosi. Seuraavassa esimerkissä käytetään CompaTo -esimerkissä luotua päivämääräobjektia.
Vaihe 2. Vertaa edelliseen menetelmään
Seuraava koodi näyttää esimerkkitapauksen, joka palauttaa true ja false. Jos päivämäärä1 on päivämäärä ennen päivämäärää2, edeltävä menetelmä palauttaa arvon tosi. Muussa tapauksessa menetelmä palauttaa epätosi.
System.out.print (date1.before (date2)); // näytä arvo '' true '' System.out.print (date2.before (date2)); // palauttaa arvon '' false ''
Vaihe 3. Vertaa käyttämällä jälkimenetelmää
Seuraava koodi näyttää esimerkkitapauksen, joka palauttaa true ja false. Jos päivämäärä2 on päivämäärä päivämäärän1 jälkeen, jälkimenetelmä palauttaa arvon tosi. Muussa tapauksessa after -menetelmä palauttaa arvon false.
System.out.print (date2.after (date1)); // näyttää arvon '' true '' System.out.print (date1.after (date2)); // näyttää arvon '' false ''
Vaihe 4. Vertaa yhtä suuri -menetelmään
Seuraava koodi näyttää esimerkkitapauksen, joka palauttaa true ja false. Jos molemmat päivämäärät ovat samat, yhtälö -menetelmä palauttaa arvon tosi. Muussa tapauksessa yhtälömenetelmä palauttaa epätosi.
System.out.print (date1.equals (date3)); // näyttää arvon '' true '' System.out.print (date1.equals (date2)); // näyttää arvon '' false ''
Tapa 3/4: Luokkakalenterin käyttö
Vaihe 1. Käytä luokkakalenteria
Kalenteriluokassa on myös vertailumuoto, yhtä kuin, jälkeen ja ennen -menetelmät, jotka toimivat samalla tavalla kuin päivämääräluokassa aiemmin kuvatut. Joten jos päivämäärätiedot on tallennettu luokkakalenteriin, sinun ei tarvitse poimia päivämäärää vain vertailun vuoksi.
Vaihe 2. Luo kalenterin ilmentymä
Jotta voit käyttää luokkakalenterin menetelmiä, sinun on luotava useita kalenterin esiintymiä. Onneksi voit käyttää aiemmin luodun päivämääräilmentymän arvoja.
Kalenteri cal1 = Calendar.getInstance (); // julista cal1 Kalenteri cal2 = Calendar.getInstance (); // julista cal2 Kalenteri cal3 = Calendar.getInstance (); // julistaa cal3 cal1.setTime (date1); // laita päivämäärä cal1 cal2.setTime (date2); cal3.setTime (päivämäärä3);
Vaihe 3. Vertaa cal1: ää ja cal2: ta edellisen menetelmän avulla
Seuraava koodi antaa arvon tr
System.out.print (cal1.before (cal2)); // palauttaa arvon '' true ''
Vaihe 4. Vertaa cal1 ja cal2 käyttämällä after -menetelmää
Seuraava koodi palauttaa epätosi, koska cal1 on päivämäärä ennen cal2.
System.out.print (cal1.after (cal2)); // palauttaa arvon '' false ''
Vaihe 5. Vertaa cal1: ää ja cal2: ta yhtälömenetelmällä
Seuraava koodi näyttää esimerkkitapauksen, joka palauttaa arvon tosi ja epätosi. Tila riippuu vertailtavasta kalenterista. Seuraava koodi palauttaa arvon "true" ja sitten "false" seuraavalla rivillä.
System.out.println (cal1.equals (cal3)); // palauttaa arvon '' true '': cal1 == cal3 System.out.print (cal1.equals (cal2)); // palauttaa arvon '' false '': cal1! = cal2
Tapa 4/4: GetTimen käyttäminen
Vaihe 1. Käytä getTime -ohjelmaa
Voit myös vertailla suoraan kahden päivämäärän aikayksikköarvoja, vaikka edelliset kaksi menetelmää voivat olla helpompia lukea ja suositella. Tällä tavalla vertaat kahta primitiivistä tietotyyppiä, joten voit käyttää operandeja "" ja "==".
Vaihe 2. Luo aikaobjekti pitkässä muodossa
Ennen kuin voit verrata päivämääriä, sinun on luotava pitkä kokonaislukuarvo aiemmin luodusta päivämääräobjektista. Onneksi getTime () -menetelmä tekee sen puolestasi.
pitkä aika1 = getTime (päivämäärä1); // julistaa primitiivinen aika1 päivämäärä1 pitkä aika2 = getTime (päivämäärä2); // ilmoita päivämäärän2 primitiivinen aika2 -arvo
Vaihe 3. Suorita vähemmän vertailu
Vertaa näitä kahta kokonaislukuarvoa alle (<) operandilla. Koska aika1 on lyhyempi kuin aika2, ensimmäinen viesti tulee näkyviin. Muu lause sisältyy syntaksin täydentämiseen.
if (aika1 <aika2) {System.out.println ("päivämäärä1 on päivämäärä ennen päivämäärää2"); // näytetään, koska aika1 <aika2} muu {System.out.println ("päivämäärä1 ei ole päivämäärä ennen päivämäärää2"); }
Vaihe 4. Suorita suurempi kuin vertailu
Vertaa näitä kahta kokonaislukuarvoa suuremmalla kuin (>) operandilla. Koska aika1 on suurempi kuin aika2, ensimmäinen viesti tulee näkyviin. Muu lause sisältyy syntaksin täydentämiseen.
if (aika2> aika1) {System.out.println ("päivämäärä2 on päivämäärä päivämäärän1 jälkeen"); // näytetään, koska aika2> aika1} else {System.out.println ("date2 ei ole päivämäärä päivämäärän1 jälkeen"); }
Vaihe 5. Vertaa yhtä paljon
Käytä operandifunktiota arvojen (==) tasavertaisuuden tarkistamiseen näiden kahden kokonaisluvun vertaamiseksi. Koska aika1 on sama kuin aika3, ensimmäinen viesti tulee näkyviin. Jos ohjelmavirta menee muuhun lauseeseen, se tarkoittaa, että kahdella kertaa ei ole samaa arvoa.
if (aika1 == aika2) {System.out.println ("molemmat päivämäärät ovat samat"); } else {System.out.println ("Ensimmäinen ei ole sama kuin toinen"); // näytetään, koska aika1! = aika2}