Alter in Java berechnen

Berechnen Sie das Alter in Java

1. Überblick

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. Java verwenden 8

Java 8 führtea new Date-Time API für die Arbeit mit Datums- und Uhrzeitangaben ein, die größtenteils auf der Joda-Time-Bibliothek basieren.

In Java 8 können wirjava.time.LocalDate für unser Geburtsdatum und das aktuelle Datum verwenden und dannPeriod verwenden, um ihre Differenz in Jahren zu berechnen:

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

LocalDate is helpful here because represents just a date, im Vergleich zurDate-Klasse von Java, die sowohl ein Datum als auch eine Uhrzeit darstellt. LocalDate.now() kann uns das aktuelle Datum geben.

UndPeriod 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 unsLocalDateTime bzw.Duration ansehen (und möglicherweise einlong instead zurückgeben).

3. Joda-Time verwenden

Wenn Java 8 keine Option ist, istwe can still get the same kind of result from Joda-Time ein De-facto-Standard für Datums- und Uhrzeitoperationen in der Welt vor Java 8.

Wir müssen dieJoda-Time dependency 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 unter Verwendung vonLocalDate undYears ausJoda-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. Java 7 verwenden

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

Als ein Beispiel können wirjava.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 angegebenenbirthDate- undcurrentDate-Objekte in ganze Zahlen und finden den Unterschied zwischen ihnen undso long as we aren’t still on Java 7 in 8000 years. Dieser Ansatz sollte bis dahin funktionieren.

5. Fazit

In diesem Artikel haben wir gezeigt, wie Sie das Alter mithilfe von Java 8-, Java 7- und Joda-Time-Bibliotheken leicht berechnen können.

Weitere Informationen zur Datenzeitunterstützung von Java 8 finden Sie unterour Java 8 date-time intro.

Und wie immer kann der vollständige Code für diese Snippets inover on GitHub gefunden werden.