Beregn alder i Java

1. Oversikt

I denne raske opplæringen vil vi se hvordan du beregner alder ved hjelp av Java 8, Java 7 og Joda-Time-biblioteker.

I alle tilfeller tar vi fødselsdato og nåværende dato som input og returnerer den beregnede alderen i år.

2. Bruke Java 8

Java 8 introduserte et nytt Date-Time API for å jobbe med datoer og klokkeslett, hovedsakelig basert på Joda-Time-biblioteket.

I Java 8 kan vi bruke java.time.LocalDate for fødselsdato og nåværende dato, og bruk deretter Periode for å beregne forskjellen i år:

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

LocalDate er nyttig her fordi det bare representerer en dato, sammenlignet med Java Dato klasse, som representerer både en dato og en tid. LocalDate.now () kan gi oss gjeldende dato.

Og Periode er nyttig når vi trenger å tenke på tidsperioder i år, måneder og dager.

Hvis vi ønsket å få en mer nøyaktig alder, si i løpet av sekunder, så vil vi ta en titt på LocalDateTime og Varighet, henholdsvis (og kanskje returnere a lang i stedet).

3. Bruke Joda-Time

Hvis Java 8 ikke er et alternativ, vi kan fortsatt få samme type resultat fra Joda-Time, en de facto standard for dato-tid operasjoner i pre-Java 8 verden.

Vi må legge til Joda-Time-avhengigheten til vår pom:

 joda-tid joda-tid 2.10 

Og så kan vi skrive en lignende metode for å beregne alder, denne gangen ved hjelp av LocalDate og År fra Joda-Time:

public int calcinAgeWithJodaTime (org.joda.time.LocalDate birthDate, org.joda.time.LocalDate currentDate) {// validate inputs ... Years age = Years.yearsBetween (birthDate, currentDate); return age.getYears (); }

4. Bruke Java 7

Uten et dedikert API i Java 7, har vi igjen å rulle våre egne, og det er derfor ganske mange tilnærminger.

Som et eksempel kan vi bruke 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 (currentDate)); int alder = (d2 - d1) / 10000; returalder; }

Her konverterer vi gitt bursdag og dagens dato objekter i heltall og finn forskjellen mellom dem, og så lenge vi ikke fortsatt er på Java 7 på 8000 år, denne tilnærmingen skal fungere til da.

5. Konklusjon

I denne artikkelen viste vi hvordan du enkelt kan beregne alder ved hjelp av Java 8, Java 7 og Joda-Time biblioteker.

For å lære mer om Java 8s datatidsstøtte, sjekk ut vår Java 8 date-time intro.

Og som alltid kan du finne den komplette koden for disse kodebitene på GitHub.


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