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.