Vypočítajte vek v jazyku Java

1. Prehľad

V tomto rýchlom výučbe sa dozvieme, ako vypočítať vek pomocou knižníc Java 8, Java 7 a Joda-Time.

Vo všetkých prípadoch vezmeme ako vstup dátum narodenia a aktuálny dátum a vrátime vypočítaný vek v rokoch.

2. Používanie Java 8

Java 8 predstavila nové API Date-Time pre prácu s dátumami a časmi, založené prevažne na knižnici Joda-Time.

V prostredí Java 8 môžeme použiť java.time.LocalDate pre náš dátum narodenia a aktuálny dátum a potom použite Obdobie vypočítať ich rozdiel v rokoch:

public int countAge (LocalDate birthDate, LocalDate currentDate) {// overiť vstupy ... return Period.b Between (birthDate, currentDate) .getYears (); }

LocalDate je tu užitočné, pretože predstavuje iba dátum, v porovnaní s Java Dátum trieda, ktorá predstavuje dátum aj čas. LocalDate.now () nám môže dať aktuálny dátum.

A Obdobie je užitočné, keď musíme myslieť na časové obdobia v rokoch, mesiacoch a dňoch.

Ak by sme chceli získať presnejší vek, povedzme za pár sekúnd, potom by sme sa chceli pozrieť na LocalDateTime a Trvanie, v uvedenom poradí (a možno vráti a dlho namiesto toho).

3. Používanie Joda-Time

Ak Java 8 nie je voľbou, stále môžeme získať rovnaký druh výsledku z Joda-Time, de facto štandard pre operácie dátumu a času vo svete pred Java 8.

Musíme pridať závislosť Joda-Time do nášho pom:

 joda-time joda-time 2.10 

A potom môžeme napísať podobnú metódu na výpočet veku, tentokrát pomocou LocalDate a Rokov od Joda-Time:

public int countAgeWithJodaTime (org.joda.time.LocalDate birthDate, org.joda.time.LocalDate currentDate) {// overiť vstupy ... Years age = Years.yearsB Between (birthDate, currentDate); návratový vek.getRoky (); }

4. Používanie Java 7

Bez vyhradeného rozhrania API v prostredí Java 7 sme ponechaní na zavedenie toho svojho, a preto existuje pomerne veľa prístupov.

Ako jeden príklad môžeme použiť java.util.Date:

public int countAgeWithJava7 (Dátum narodeniaDátum, Dátum aktuálnyDátum) {// overenie vstupov ... DateFormat formatter = nový SimpleDateFormat ("rrrrMMdd"); int d1 = Integer.parseInt (formatter.format (birthDate)); int d2 = Integer.parseInt (formatter.format (currentDate)); int vek = (d2 - d1) / 10 000; návratový vek; }

Tu prevedieme dané dátum narodenia a aktuálny dátum objekty do celých čísel a nájdite medzi nimi rozdiel a pokiaľ nebudeme stále na Jave 7 8000 rokov, tento prístup by mal dovtedy fungovať.

5. Záver

V tomto článku sme si ukázali, ako ľahko vypočítať vek pomocou knižníc Java 8, Java 7 a Joda-Time.

Ak sa chcete dozvedieť viac informácií o dátovej a časovej podpore Java 8, pozrite si naše intro pre dátum a čas v Java 8.

A ako vždy, kompletný kód týchto úryvkov nájdete na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found