Berechnen Sie das Alter in Java

1. Übersicht

In diesem kurzen Tutorial erfahren Sie, wie Sie das Alter mithilfe von Java 8-, Java 7- und Joda-Time-Bibliotheken berechnen.

In allen Fällen nehmen wir das Geburtsdatum und das aktuelle Datum als Eingabe und geben das berechnete Alter in Jahren zurück.

2. Verwenden von Java 8

Java 8 führte eine neue Datums- / Uhrzeit-API für die Arbeit mit Datums- und Uhrzeitangaben ein, die weitgehend auf der Joda-Zeitbibliothek basiert.

In Java 8 können wir java.time.LocalDate für unser Geburtsdatum und das aktuelle Datum verwenden und dann Period verwenden , um die Differenz in Jahren zu berechnen:

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

LocalDate ist hier hilfreich, da es nur ein Datum darstellt, verglichen mit der Date- Klassevon Java, die sowohl ein Datum als auch eine Uhrzeit darstellt. LocalDate.now () kann uns das aktuelle Datum mitteilen .

Und Periode ist hilfreich, wenn wir über Zeiträume in Jahren, Monaten und Tagen nachdenken müssen.

Wenn wir ein genaueres Alter erhalten möchten, beispielsweise in Sekunden, möchten wir uns LocalDateTime bzw. Duration ansehen (und stattdessen möglicherweise eine lange zurückgeben ).

3. Verwenden von Joda-Time

Wenn Java 8 keine Option ist, können wir mit Joda-Time , einem De-facto-Standard für Datums- und Uhrzeitoperationen in der Welt vor Java 8 , immer noch das gleiche Ergebnis erzielen .

Wir müssen die Joda-Zeit-Abhängigkeit zu unserem Pom hinzufügen:

 joda-time joda-time 2.10 

Und dann können wir eine ähnliche Methode zur Berechnung des Alters schreiben, diesmal mit LocalDate und Years from Joda-Time:

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

4. Verwenden von Java 7

Ohne eine dedizierte API in Java 7 müssen wir unsere eigene rollen, daher gibt es einige Ansätze.

Als ein Beispiel können wir java.util.Date verwenden :

public int calculateAgeWithJava7( Date birthDate, Date currentDate) { // validate inputs ... DateFormat formatter = new SimpleDateFormat("yyyyMMdd"); int d1 = Integer.parseInt(formatter.format(birthDate)); int d2 = Integer.parseInt(formatter.format(currentDate)); int age = (d2 - d1) / 10000; return age; }

Hier konvertieren wir die angegebenen BirthDate- und CurrentDate- Objekte in Ganzzahlen und ermitteln den Unterschied zwischen ihnen. Solange wir in 8000 Jahren noch nicht auf Java 7 sind , sollte dieser Ansatz bis dahin funktionieren.

5. Schlussfolgerung

In diesem Artikel haben wir gezeigt, wie das Alter mithilfe von Java 8-, Java 7- und Joda-Time-Bibliotheken einfach berechnet werden kann.

Weitere Informationen zur Datenzeitunterstützung von Java 8 finden Sie in unserem Java 8-Datums- und Uhrzeit-Intro.

Und wie immer finden Sie den vollständigen Code für diese Snippets auf GitHub.