Beregn alder i Java

1. Oversigt

I denne hurtige vejledning ser vi, hvordan man beregner alder ved hjælp af Java 8, Java 7 og Joda-Time biblioteker.

I alle tilfælde tager vi fødselsdatoen og den aktuelle dato som input og returnerer den beregnede alder i år.

2. Brug af Java 8

Java 8 introducerede et nyt Date-Time API til at arbejde med datoer og tidspunkter, stort set baseret på Joda-Time-biblioteket.

I Java 8 kan vi bruge java.time.LocalDate for vores fødselsdato og nuværende dato, og brug derefter Periode at beregne deres forskel i år:

public int calcAAge (LocalDate birthDate, LocalDate currentDate) {// validate inputs ... return Period.between (birthDate, currentDate) .getYears (); }

LocalDate er nyttigt her, fordi det kun repræsenterer en dato, sammenlignet med Java'er Dato klasse, der repræsenterer både en dato og et tidspunkt. LocalDate.now () kan give os den aktuelle dato.

Og Periode er nyttigt, når vi har brug for at tænke over tidsperioder i år, måneder og dage.

Hvis vi ønskede at få en mere nøjagtig alder, siger i sekunder, ville vi gerne se på LocalDateTime og Varighed, henholdsvis (og måske returnere a lang i stedet).

3. Brug af Joda-Time

Hvis Java 8 ikke er en mulighed, vi kan stadig få den samme slags resultat fra Joda-Time, en de facto-standard til dato-tid-operationer i præ-Java 8-verdenen.

Vi er nødt til at tilføje Joda-Time afhængighed til vores pom:

 joda-tid joda-tid 2.10 

Og så kan vi skrive en lignende metode til at beregne alder, denne gang ved hjælp af LocalDate og Flere år fra Joda-Time:

offentlig int beregneAgeWithJodaTime (org.joda.time.LocalDate birthDate, org.joda.time.LocalDate currentDate) {// validere input ... Years age = Years.yearsBetween (birthDate, currentDate); return age.getYears (); }

4. Brug af Java 7

Uden en dedikeret API i Java 7 er vi tilbage til at rulle vores egne, og så er der en hel del tilgange.

Som et eksempel kan vi bruge java.util.Date:

public int calcinAgeWithJava7 (Date birthDate, Date currentDate) {// validate inputs ... DateFormat formatter = new SimpleDateFormat ("yyyyMMdd"); int d1 = Integer.parseInt (formatter.format (fødselsdato)); int d2 = Integer.parseInt (formatter.format (nuværende dato)); int alder = (d2 - d1) / 10000; returalder }

Her konverterer vi det givne fødselsdato og nuværende dato objekter i heltal og find forskellen mellem dem, og så længe vi ikke stadig er på Java 7 i 8000 år, denne tilgang skal fungere indtil da.

5. Konklusion

I denne artikel viste vi, hvordan man nemt beregner alder ved hjælp af Java 8, Java 7 og Joda-Time biblioteker.

For at lære mere om Java 8s understøttelse af datatid, se vores Java 8 dato-tid intro.

Og som altid kan den komplette kode til disse uddrag findes på GitHub.


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