Vertaile Java-päivämääriä

Kirjoittaja: Roger Morrison
Luomispäivä: 24 Syyskuu 2021
Päivityspäivä: 1 Heinäkuu 2024
Anonim
Vertaile Java-päivämääriä - Neuvoja
Vertaile Java-päivämääriä - Neuvoja

Sisältö

Java-päivämääriä voidaan verrata usealla tavalla. Sisäisesti päivämäärä esitetään (pitkänä) ajankohtana - millisekuntien lukumäärä, joka on kulunut 1. tammikuuta 1970 lähtien. Java-ohjelmassa päivämäärä on Date-objekti, mikä tarkoittaa, että se sisältää useita menetelmiä päivämäärien vertailemiseksi. Mikä tahansa menetelmä kahden päivämäärän vertaamiseksi vertaa periaatteessa molempien päivämäärien kulunutta aikaa.

Astua

Tapa 1/4: "salīdzaa" -komennon käyttäminen

  1. Käytä vertailua. Päivämäärä toteuttaa ComparableDate> -merkin ja siten kahta päivämäärää voidaan verrata suoraan toisiinsa vertailumenetelmällä. Jos päivämäärät osoittavat samaa ajankohtaa, menetelmä palauttaa nollan. Jos vertailtava päivämäärä on ennen päivämääräargumenttia, negatiivinen arvo palautetaan. Jos vertailtava päivämäärä on myöhempi kuin päivämäärä argumentin, positiivinen arvo palautetaan. Jos päivämäärät ovat samat, palautetaan nolla.
  2. Luo Date-objektit. Sinun on luotava kukin päivämääräobjekti, ennen kuin voit alkaa vertailla niitä. Yksi tapa tehdä tämä on soveltaa SimpleDateFormat-luokkaa. Tämän avulla voit syöttää päivämääriä helposti Date-objekteihin.

      SimpleDateFormat sdf = uusi SimpleDateFormat ("vvvv-kk-pp"); // Arvojen ilmoittamiseksi uusissa päivämääräobjekteissa.Käytä samaa päivämäärämuotoa luodessasi päivämääriä Date date1 = sdf.parse ("23.2.1995"); // date1 on 23. helmikuuta 1995 Date date2 = sdf.parse ("2001-10-31"); // date2 on 31. lokakuuta 2001 Date date3 = sdf.parse ("1995-02-23"); // päivämäärä3 on 23. helmikuuta 1995

  3. Vertaa päivämääräobjekteja. Alla on esitetty jokainen tapaus - pienempi, yhtä suuri ja suurempi kuin.

      date1.compareTo (date2); // date1 date2, alle 0 date2.compareTo (date1); // date2> date1, palauttaa arvon 0 date1.compareTo (date3); // date1 = date3, palauttaa 0

Menetelmä 2/4: Menetelmien "on yhtä suuri, jälkeen ja ennen" käyttö

  1. Käytä yhtälöitä jälkeen ja ennen. Päivämääriä voidaan verrata toisiinsa käyttämällä menetelmiä equals, after ja before. Jos kaksi päivämäärää osoittaa saman ajan, equals-menetelmä palauttaa arvon "true". Esimerkeissä käytetään aiemmin luotuja päivämääriä vertailumenetelmän avulla.
  2. Vertaa edellisen menetelmän avulla. Alla oleva koodi näyttää totuuden ja väärän tapauksen. Jos date1 on aikaisempi kuin date2, tulos on tosi. Jos ei, ennen palauttaa epätosi.

      System.out.print (date1.before (date2)); // tulosta true System.out.print (päivämäärä2.ennen (päivämäärä2)); // tulosta väärä

  3. Vertaa tätä seuraavaan menetelmään. Alla oleva koodi näyttää totuuden ja väärän tapauksen. Jos päivämäärä2 on myöhempi kuin päivämäärä1, niin sen jälkeen palauttaa arvon tosi. Jos ei, palauttaa arvon false.

      System.out.print (date2.after (date1)); // tulosta true System.out.print (date1.after (date2)); // tulosta väärä

  4. Vertaa käyttämällä yhtä suurta menetelmää. Alla oleva koodi näyttää totuuden ja väärän tapauksen. Jos päivämäärät ovat samat, equals palauttaa arvon true. Jos ei, equals palauttaa arvon false.

      System.out.print (date1.equals (date3)); // tulosta true System.out.print (date1.equals (date2)); // tulosta väärä

Tapa 3/4: Kalenteri-luokan käyttäminen

  1. Käytä Kalenteri-luokkaa. Kalenteri-luokassa on myös vertailumenetelmät, equals, after ja before -menetelmät, jotka toimivat samalla tavalla kuin yllä päivämääräluokassa on kuvattu. Joten jos päivämäärätiedot säilytetään kalenterissa, "päivämäärää" ei tarvitse poimia, vain kahden päivämäärän vertaamiseksi.
  2. Luo Kalenterin esiintymä. Kalenterimenetelmien käyttäminen edellyttää joitain Kalenteri-esiintymiä. Onneksi voit käyttää päivämäärän ilmentymien luomaa aikaa.

      Kalenteri cal1 = Kalenteri.getInstance (); // ilmoittaa cal1 Kalenteri cal2 = Kalenteri.getInstance (); // ilmoittaa cal2 Kalenteri cal3 = Kalenteri.getInstance (); // ilmoittaa cal3 cal1.setTime (date1); // koskee päivämäärää cal1 cal2.setTime (date2); cal3.setTime (päivämäärä3);

  3. Vertaa cal1 ja cal2 käyttäen aiemmin. Alla oleva koodi palauttaa arvon true, koska cal1 on aikaisempi kuin cal2.

      System.out.print (cal1.before (cal2)); // tulosta tosi

  4. Vertaa cal1 ja cal2 käyttämällä merkkiä after. Alla oleva koodi palauttaa arvon false, koska cal1 on aikaisempi kuin cal2.

      System.out.print (cal1.after (cal2)); // tulosta väärä

  5. Vertaa cal1 ja cal2 käyttämällä yhtälöä. Alla oleva koodi näyttää esimerkin sekä oikeista että vääristä. Ehto riippuu vertailtavista Kalenteri-esiintymistä. Alla oleva koodi palauttaa "true" ja sitten "false" seuraavalle riville.

      System.out.println (cal1.equals (cal3)); // tulosta tosi: cal1 == cal3 System.out.print (cal1.equals (cal2)); // tulosta väärä: cal1! = cal2

Tapa 4/4: "getTime" -menetelmän käyttö

  1. Käytä getTimeä. On myös mahdollista verrata suoraan kahta aikapistettä, vaikka mikä tahansa edellä mainituista lähestymistavoista tuottaa todennäköisesti luettavampia tuloksia ja on siten edullinen. Tämä on kahden primitiivisen tietotyypin vertailu, joten se voidaan tehdä merkinnöillä "", ">" ja "==".
  2. Luo "pitkät" objektit. Ennen kuin voit verrata päivämääriä, sinun on luotava pitkiä kokonaislukuja aiemmin luotujen Date-objektien tiedoista. Onneksi getTime () -menetelmä tekee suurimman osan työstä puolestasi.

      pitkä aika1 = getTime (päivämäärä1); // ilmoittaa päivämäärän1 primitiivisen kellonajan1 pitkän ajan2 = getTime (päivämäärä2); // julistaa päivämäärän2 primitiivisen kellonajan2

  3. Käytä yhtälöä "alle". Käytä "alle" -symbolia () verrata näitä kahta kokonaislukua. Koska aika1 on alle aika2, ensimmäinen viesti tulisi tulostaa näytölle. Muu lause sisältyy oikeaan syntaksiin.

      if (aika1 aika2) {System.out.println ("päivämäärä1 on aikaisempi kuin päivämäärä2"); // tulosta, koska time1 time2} else {System.out.println ("date1 on myöhempi tai yhtä suuri kuin date2"); }

  4. Tee "suurempi kuin" -vertailu. Vertaa näitä kahta kokonaislukua käyttämällä symbolia "suurempi kuin" (>). Koska aika1 on suurempi kuin aika2, ensimmäinen viesti tulostetaan näytölle. Muut käskyt sisältyvät oikeaan syntaksiin.

      if (aika2> aika1) {System.out.println ("päivämäärä2 tulee päivämäärän1 jälkeen"); // tulosta, koska aika2> aika1} muu {System.out.println ("päivämäärä2 on aikaisempi tai yhtä suuri kuin päivämäärä1"); }

  5. Tee "yhtä" -vertailu. Käytä symbolia (==) verrata näitä kahta kokonaislukua. Koska aika1 on aika3, ensimmäinen viesti tulisi tulostaa. Jos ohjelma pääsee else-lauseeseen, se tarkoittaa, että ajat eivät ole samat.

      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"); // tulosta, koska aika1! = aika2}