K vyřešení problému výpočtu věku z data můžeme použít vestavěné třídy Java, jako je LocalDate a Period. Tyto třídy jsou součástí Java Time API představeného v Javě 8, které je navrženo tak, aby zjednodušilo výpočty data a času.
import java.time.LocalDate; import java.time.Period; public class AgeCalculator { public static void main(String[] args) { LocalDate birthDate = LocalDate.of(1990, 1, 1); LocalDate currentDate = LocalDate.now(); int age = calculateAge(birthDate, currentDate); System.out.println("Age: " + age); } public static int calculateAge(LocalDate birthDate, LocalDate currentDate) { Period period = Period.between(birthDate, currentDate); return period.getYears(); } }
Pojďme si kód rozebrat krok za krokem. Nejprve importujeme potřebné třídy, LocalDate a Period. Poté vytvoříme třídu s názvem AgeCalculator s hlavní metodou, která inicializuje datum narození a aktuální datum pomocí třídy LocalDate. Poté je volána metoda `calculateAge` s poskytnutými daty narození a aktuálními daty jako argumenty.
Uvnitř metody `calculateAge` používáme metodu `Period.between()`, která vypočítává období mezi dvěma daty. Nakonec vrátíme rozdíl v letech voláním metody `getYears()` pro vypočítané období.
Java Time API
Jedno Java Time API, také známá jako Java Date and Time API, je výkonná knihovna představená v Javě 8 pro zpracování úloh souvisejících s datem a časem. Je navržen tak, aby byl intuitivnější, robustnější a snadněji použitelný než jeho předchůdce, třídy java.util.Date a Calendar, které měly řadu problémů a omezení.
Některé z klíčových funkcí Java Time API zahrnují:
- Neměnné a vláknově bezpečné třídy.
- Jasné oddělení mezi lidsky čitelným zobrazením data a času a zobrazením strojového času.
- Flexibilní a rozšiřitelné API pro podporu různých kalendářů a systémů měření času.
- Vestavěná podpora pro časová pásma a letní čas.
Pomocí období a LocalDate
Jedno Období class v Javě představuje časové období vyjádřené v letech, měsících a dnech. Je to užitečná třída pro výpočet rozdílu mezi dvěma daty, jak ukazuje náš příklad výpočtu věku.
Jedno LocalDate class na druhé straně představuje datum bez času a informací o časovém pásmu. Je to užitečné pro reprezentaci dat narození, událostí nebo jakéhokoli jiného data, kde nejsou časové informace nutné.
V našem příkladu výpočtu věku jsme použili metodu `Period.between()` k výpočtu rozdílu mezi dvěma instancemi LocalDate – datem narození a aktuálním datem. Výsledný objekt Period nám poskytuje rozdíl v letech, měsících a dnech mezi dvěma daty, což usnadňuje výpočet věku osoby.
Závěrem lze říci, že výpočet věku z data lze snadno dosáhnout pomocí vestavěných tříd Java, jako je LocalDate a Period. Tyto třídy spolu s širším rozhraním Java Time API nabízejí výkonné a flexibilní řešení pro zpracování výpočtů data a času ve vašich aplikacích Java.