Bereken de leeftijd in Java

1. Overzicht

In deze korte tutorial zullen we zien hoe u leeftijd kunt berekenen met behulp van Java 8-, Java 7- en Joda-Time-bibliotheken.

In alle gevallen nemen we de geboortedatum en de huidige datum als invoer en retourneren we de berekende leeftijd in jaren.

2. Java 8 gebruiken

Java 8 introduceerde een nieuwe Date-Time API voor het werken met datums en tijden, grotendeels gebaseerd op de Joda-Time-bibliotheek.

In Java 8 kunnen we java.time.LocalDate voor onze geboortedatum en huidige datum, en gebruik dan Periode om hun verschil in jaren te berekenen:

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

LocalDate is hier handig omdat het slechts een datum vertegenwoordigt, vergeleken met Java's Datum class, die zowel een datum als een tijd vertegenwoordigt. LocalDate.now () kan ons de huidige datum geven.

En Periode is handig als we moeten nadenken over tijdsperioden in jaren, maanden en dagen.

Als we een meer exacte leeftijd wilden krijgen, laten we zeggen in seconden, dan zouden we het willen bekijken LocalDateTime en Looptijd, respectievelijk (en misschien een lang in plaats daarvan).

3. Joda-Time gebruiken

Als Java 8 geen optie is, we kunnen nog steeds hetzelfde soort resultaat krijgen van Joda-Time, een de-facto standaard voor datum-tijdbewerkingen in de wereld van vóór Java 8.

We moeten de Joda-Time-afhankelijkheid aan onze pom toevoegen:

 joda-tijd joda-tijd 2.10 

En dan kunnen we een vergelijkbare methode schrijven om de leeftijd te berekenen, deze keer met behulp van LocalDate en Jaren van Joda-Time:

public int berekenAgeWithJodaTime (org.joda.time.LocalDate birthDate, org.joda.time.LocalDate currentDate) {// valideer ingangen ... Years age = Years.yearsBetween (birthDate, currentDate); return age.getYears (); }

4. Java 7 gebruiken

Zonder een speciale API in Java 7, moeten we onze eigen API rollen, en dus zijn er nogal wat benaderingen.

Als een voorbeeld kunnen we gebruiken java.util.Date:

public int berekenAgeWithJava7 (Datum geboortedatum, Datum huidigeDatum) {// valideer invoer ... DateFormat formatter = nieuwe SimpleDateFormat ("jjjjMMdd"); int d1 = Integer.parseInt (formatter.format (birthDate)); int d2 = Integer.parseInt (formatter.format (currentDate)); int leeftijd = (d2 - d1) / 10000; terugkeerleeftijd; }

Hier converteren we het gegeven geboortedatum en huidige datum objecten in gehele getallen en zoek het verschil daartussen, en zolang we over 8000 jaar nog niet op Java 7 zijn, zou deze aanpak tot dan moeten werken.

5. Conclusie

In dit artikel hebben we laten zien hoe u gemakkelijk leeftijd kunt berekenen met behulp van Java 8-, Java 7- en Joda-Time-bibliotheken.

Voor meer informatie over Java 8's data-time ondersteuning, bekijk onze Java 8 date-time intro.

En zoals altijd is de volledige code voor deze fragmenten te vinden op GitHub.