Izračunaj dob u Javi

1. Pregled

U ovom brzom vodiču vidjet ćemo kako izračunati dob pomoću biblioteka Java 8, Java 7 i Joda-Time.

U svim ćemo slučajevima uzeti datum rođenja i trenutni datum kao ulazne podatke i vratiti izračunatu dob u godinama.

2. Korištenje Jave 8

Java 8 je predstavila novi Date-Time API za rad s datumima i vremenima, uglavnom zasnovan na biblioteci Joda-Time.

U Javi 8 možemo koristiti java.time.LocalDate za naš datum rođenja i trenutni datum, a zatim upotrijebite Razdoblje kako bi izračunali njihovu razliku u godinama:

javni int izračunAge (LocalDate datum rođenja, LocalDate trenutni datum) {// provjera valjanosti unosa ... povratak Period.između (datum rođenja, trenutni datum) .getYears (); }

LocalDate je ovdje korisno jer predstavlja samo datum, u usporedbi s Javinim Datum klase, koja predstavlja i datum i vrijeme. LocalDate.now () može nam dati trenutni datum.

I Razdoblje korisno je kada moramo razmišljati o vremenskim razdobljima u godinama, mjesecima i danima.

Ako bismo željeli dobiti točniju dob, recimo u sekundama, tada bismo je željeli pogledati LocalDateTime i Trajanje, odnosno (i možda vratiti a dugo umjesto toga).

3. Korištenje Joda-Timea

Ako Java 8 nije opcija, još uvijek možemo dobiti isti takav rezultat od Joda-Timea, de-facto standard za operacije datuma i vremena u svijetu prije Java 8.

Moramo dodati ovisnost o Joda-vremenu u naš pom:

 joda-vrijeme joda-vrijeme 2.10 

A onda možemo napisati sličnu metodu za izračunavanje dobi, ovaj put koristeći LocalDate i Godine iz Joda-Timea:

public int izračunajAgeWithJodaTime (org.joda.time.LocalDate datum rođenja, org.joda.time.LocalDate currentDate) {// provjera valjanosti unosa ... Godine dob = Godine.godineMeđu (datum rođenja, trenutniDatum); povratak age.getYears (); }

4. Korištenje Jave 7

Bez namjenskog API-ja u Javi 7, preostaje nam da pokrenemo vlastiti, tako da postoji dosta pristupa.

Kao jedan od primjera možemo koristiti java.util.Datum:

javni int CalcuAgeWithJava7 (Datum rođenja, Datum trenutnog datuma) {// provjera valjanosti unosa ... DateFormat formatter = novi SimpleDateFormat ("yyyyMMdd"); int d1 = Integer.parseInt (formatter.format (datum rođenja)); int d2 = Integer.parseInt (formatter.format (currentDate)); int dob ​​= (d2 - d1) / 10000; povratna dob; }

Ovdje pretvaramo dano Datum rođenja i trenutni datum objekte u cijele brojeve i pronađu razliku između njih, i sve dok još uvijek nismo na Javi 7 u 8000 godina, ovaj bi pristup trebao raditi do tada.

5. Zaključak

U ovom smo članku pokazali kako lako izračunati dob pomoću biblioteka Java 8, Java 7 i Joda-Time.

Da biste saznali više o podršci za vrijeme podataka Java 8, pogledajte uvod u datum i vrijeme Java 8.

I kao i uvijek, cjelovit kod za ove isječke možete pronaći na GitHubu.