gtemata.com

Cum se compară data în Java

Există câteva modalități de a compara două date în limba Java. În cadrul programului o dată este reprezentat sub forma unui număr întreg (lung), referitoare la un anumit punct de timp - numărul de milisecunde, care au trecut de la 1 ianuarie 1970. În această limbă "Perioada" este un obiect și, prin urmare, include o varietate de metode de comparare. Practic, orice metodă de comparare a două date efectuează de fapt o comparație între două numere reprezentând momentele de timp la care se referă datele.

paşi

Metoda 1

Utilizați metoda "compareTo"
Imaginea intitulată 4301351 1
1
Utilizați metoda "compareTo". Clasa "Perioada" implementează interfața "comparabil"prin urmare, două obiecte de acest tip (adică două date) pot fi comparate direct utilizând metoda "compareTo". Dacă datele sunt identice, adică se referă la aceeași instant, metoda va returna valoarea zero (0). Dacă obiectul "Perioada" care invocă metoda "compareTo" reprezintă o dată înaintea celei folosite ca argument al metodei, comparația va reveni la o valoare numerică mai mică decât zero. Dimpotrivă, dacă obiectul "Perioada" care invocă metoda "compareTo" reprezintă o dată mai târziu decât cea utilizată ca argument, comparația va reveni la o valoare numerică mai mare decât zero. Așa cum am menționat deja, dacă cele două date comparative sunt egale, valoarea zero va fi returnată.
  • Imaginea intitulată 4301351 2
    2
    Creați două obiecte "Perioada". Primul pas, înainte de a putea face comparația, constă în crearea celor două obiecte care vor conține datele de comparat. Unul dintre modurile de a face acest lucru este de a folosi clasa "SimpleDateFormat". Acesta din urmă vă permite să introduceți o dată într-un obiect de tip "Perioada" într-un mod simplu și rapid.
    SimpleDateFormat sdf = nou SimpleDateFormat ("aaaa-ll-zz") - // Declarația obiectului care reprezintă formatul datei pe care o vom folosi în comparație. Când vom introduce valorile, va trebui să respectăm acest formatDată dată1 = sdf.parse ("02/23/1995") - // data1 reprezintă 23 februarie 1995Dată dată2 = sdf.parse ("2001-10-31") - // data2 reprezintă 31 octombrie 2001Data dată3 = sdf.parse ("02/23/1995") - // data3 reprezintă 23 februarie 1995
  • Imaginea intitulată 4301351 3
    3
    Comparați obiecte de tip "Perioada". Codul de mai jos arată rezultatele pe care le primim în fiecare dintre cazurile posibile: în cazul în care prima dată este mai mică decât cea de a doua, atunci când avem două date identice, iar în cazul în care prima dată este mai mare decât al doilea.
    date1.compareTo (data2) - // data1 < data2 vom obține o valoare mai mică de 0date2.compareTo (date1) - // date2 > data1 vom obține o valoare mai mare decât 0date1.compareTo (date3) - // date1 = date3 vom obține exact 0
  • Metoda 2

    Utilizați metodele "Este egal". "după" și "înainte"
    Imaginea intitulată 4301351 4
    1
    Utilizați metodele de comparare "este egală". "după" și "înainte". Obiectele clasei "Perioada" pot fi comparate direct folosind metodele "este egală". "după" și "înainte". Dacă cele două date comparative se referă la aceeași instantanee, metoda "este egală" va reveni la valoarea booleană "fals". Pentru a expune utilizarea acestor metode, vom folosi aceleași date de eșantion utilizate pentru a descrie comportamentul metodei "compareTo".
  • Imaginea intitulată 4301351 5
    2
    Comparăm valorile utilizând metoda "înainte". Următorul cod arată ambele cazuri, adică atunci când valoarea Booleană este returnată "fals" și când este returnat "fals". dacă "DATE1" reprezintă o dată anterioară datei stocate în obiect "DATE2", metoda "înainte" va returna valoarea "fals". În caz contrar, vom obține valoarea booleană "fals".
    System.out.print (data1.before (date2)) - // se va tipări valoarea "fals"System.out.print (data2.before (date2)) - // se va tipări valoarea "fals"
  • Imagine cu denumirea 4301351 6
    3
    Comparăm valorile utilizând metoda "după". Următorul cod arată ambele cazuri, adică atunci când valoarea Booleană este returnată "fals" și când este returnat "fals". dacă "DATE2" reprezintă o dată ulterioară celei stocate în obiect "DATE1", metoda "după" va returna valoarea "fals". În caz contrar, vom obține valoarea booleană "fals".
    System.out.print (data2.after (date1)) - // se va tipări valoarea "fals"System.out.print (data1.after (date2)) - // se va tipări valoarea "fals"
  • Imaginea intitulată 4301351 7
    4
    Comparăm valorile utilizând metoda "este egală". Următorul cod arată ambele cazuri, adică atunci când valoarea Booleană este returnată "fals" și când este returnat "fals". Dacă ambele obiecte "Perioada" din comparație reprezintă aceeași dată, metoda "este egală" va returna valoarea "fals". În caz contrar, vom obține valoarea booleană "fals".
    System.out.print (data1.equals (date3)) - // se va tipări valoarea "fals"System.out.print (date1.equals (date2)) - // se va tipări valoarea "fals"
  • Metoda 3

    Utilizați clasa "calendar"
    Imaginea intitulată 4301351 8
    1
    Utilizați clasa "calendar". Acesta din urmă este echipat, de asemenea, cu metode de comparare "compareTo": "este egală". "după" și "înainte", care funcționează exact în același fel descris pentru clasă "Perioada". Dacă datele de comparat sunt stocate într-un obiect de tip "calendar", nu există nici un motiv să le extrageți pentru a face comparația, pur și simplu utilizați metodele obiectului.
  • Imaginea intitulată 4301351 9
    2
    Creați instanțe ale clasei "calendar". Pentru a folosi metodele clasei "calendar" trebuie mai întâi să creăm instanțe ale acestui element. Din fericire, puteți profita de datele pe care le-am inclus deja în instanțele de clasă "Perioada".


    Calendar Cal1 Calendar.getInstance = () - // declarație obiect cal1Calendar CAL2 = Calendar.getInstance () - // declarație obiect cal2Calendar Calendar.getInstance CAL 3 = () - cal3cal1.setTime // declarație obiect (date1 ) - // introduce datele din cal1cal2.setTime obiect (DATE2) - // introduce datele în interiorul obiectului cal2cal3.setTime (DATE3) - // introduce datele în obiectul CAL 3
  • Imaginea intitulată 4301351 10
    3
    Comparăm obiectele "Cal1" și "CAL2" folosind metoda "înainte". Următorul cod va imprima valoarea Boolean pe ecran "fals", dacă data este cuprinsă în "Cal1" este mai devreme decât cel stocat în "CAL2".
    System.out.print (cal1.before (cal2)) - // valoarea va fi afișată pe ecran "fals"
  • Imaginea intitulată 4301351 11
    4
    Comparăm obiectele "Cal1" și "CAL2" folosind metoda "după". Următorul cod va imprima valoarea Boolean pe ecran "fals", dacă data este cuprinsă în "Cal1" este mai devreme decât cel stocat în "CAL2".
    System.out.print (cal1.after (cal2)) - // valoarea va fi afișată pe ecran "fals"
  • Imagine cu denumirea 4301351 12
    5
    Comparăm obiectele "Cal1" și "CAL2" folosind metoda "este egală". Următorul cod arată ambele cazuri, adică atunci când valoarea Booleană este returnată "fals" și când va fi returnat "fals". Condițiile care trebuie îndeplinite, în mod evident, depind de valoarea asumată de instanțele de clasă "calendar" pe care o vom compara. Următorul exemplu de cod trebuie să tipărească valoarea pe ecran "fals", urmată de valoare "fals" pe linia următoare.
    Println (cal1.equals (CAL3)) - // va fi arătat că valoarea reală dată Cal1 este egal cu cal3System.out.print (cal1.equals (CAL2)) - // va fi arătat că, având în vedere valoarea falsă cal1 este diferit de cal2
  • Metoda 4

    Utilizați metoda "getTime"
    Imagine cu denumirea 4301351 13
    1
    Utilizați metoda "getTime". În Java, puteți compara direct două date după transformarea valorii relative într-un tip de date primitiv (adică tipurile de date implicite ale limbii). Metodele descrise mai sus sunt, cu toate acestea, de preferat, deoarece acestea sunt mai ușor de citit și, prin urmare, pot fi mai potrivite pentru un mediu de lucru în care codul sursă trebuie să fie gestionate de către persoane diferite. Deoarece comparația va avea loc între datele primitive, aceasta poate fi efectuată direct prin operatorii de comparație "<". ">" și "==".
  • Imagine cu denumirea 4301351 14
    2
    Creăm obiecte de tip "lung" care va conține datele de comparat. Pentru a face acest lucru, va trebui să transformăm valoarea stocată în astfel de obiecte "Perioada" folosit în precedență într-un întreg de tip "lung". Din fericire, există o metodă care efectuează această conversie pur și simplu: "getTime ()".
    long time1 = getTime (data1) - // declara obiectul primitiv "time1" la care atribuim valoarea lui "DATE1"long time2 = getTime (date2) - // declarăm obiectul primitiv "ora2" la care atribuim valoarea lui "DATE2"long time3 = getTime (data3) - // declara obiectul primitiv "time3" la care atribuim valoarea lui "DATE3"
  • Imaginea intitulată 4301351 15
    3
    Să verificăm dacă prima dată este mai mică decât a doua. Pentru a face acest lucru, vom folosi operatorul de comparare "<" pentru a compara cele două valori întregi care se potrivesc cu datele "DATE1" și "DATE2". Deoarece numărul stocat în obiect "time1" este mai mică decât în ​​obiect "ora2" mesajul conținut în prima ramură a structurii logice va fi tipărit "Dacă-altcineva". Blocul de cod aferent instrucțiunii "altfel" a fost inclusă pentru a respecta corectitudinea sintaxei.
    în cazul în care (time1 < ora2) {System.out.println ("data1 este mai devreme decât data2") - // acest mesaj va fi tipărit deoarece de fapt timpul1 este mai mic decât timpul2} altceva {System.out.println ("data1 nu este mai devreme de data2") -}
  • Imagine cu denumirea 4301351 16
    4
    Să verificăm dacă prima dată este mai mare decât a doua. Pentru a face acest lucru, vom folosi operatorul de comparare ">" pentru a compara cele două valori întregi care se potrivesc cu datele "DATE1" și "DATE2". Deoarece numărul stocat în obiect "time1" este mai mică decât în ​​obiect "ora2" mesajul conținut în prima ramură a structurii logice va fi tipărit "Dacă-altcineva". Blocul de cod aferent instrucțiunii "altfel" a fost inclusă pentru a respecta corectitudinea sintaxei.
    în cazul în care (ora2 > time1) {System.out.println ("data2 este după data1") - // acest mesaj va fi tipărit deoarece de fapt timpul2 este mai mare decât timpul1} altceva {System.out.println ("data2 nu este mai târziu de data1") -}
  • Imaginea intitulată 4301351 17
    5
    Să verificăm dacă ambele date sunt identice. Pentru a face acest lucru, vom folosi operatorul de comparare "==" pentru a compara cele două valori întregi care se potrivesc cu datele "DATE1" și "DATE2". Deoarece numărul stocat în obiect "time1" este același cu cel din obiect "time3" mesajul conținut în prima ramură a structurii logice va fi tipărit "Dacă-altcineva". Dacă programul urma să imprime cel de-al doilea mesaj pe ecran (adică unul inclus în instrucțiune) "altfel"), înseamnă că cele două date comparate nu sunt aceleași.
    dacă (time1 == time2) {System.out.println ("Datele sunt aceleași") -} else {System.out.println ("Datele sunt diferite") - // acest mesaj va fi tipărit deoarece valoarea timpului 1 este de fapt diferită de cea dată2}
  • Distribuiți pe rețelele sociale:

    înrudit