Skip to content

Kalkulator wieku

This content is not available in your language yet.

Stworzysz Kalkulator wieku - aplikacje umozliwiajaca obliczenie dokładnego wieku na podstawie daty urodzenia. Użytkownik wprowadza date urodzenia, a system oblicza wiek w latach, miesiacach i dniach. Historia obliczen jest zapisywana do pliku JSON.

Czego się nauczysz?

  • Obsługi formularzy HTML i walidacji danych w PHP
  • Pracy z datami i obliczania różnic miedzy nimi
  • Wykorzystania klasy DateTime i metody diff()
  • Zapisu i odczytu danych z plikow JSON

W prawdziwej pracy...

Obliczenia dat sa wszechobecne w programowaniu - od weryfikacji wieku użytkownika (18+), przez systemy rezerwacji, po kalkulatory ubezpieczeniowe i emerytalne. Klasa DateTime w PHP to potezne narzedzie, które każdy programista powinien dobrze znac.

  1. Formularz wprowadzania daty urodzenia Użytkownik podaje date urodzenia w formacie daty (input type=“date”).

  2. Obliczenie wieku System oblicza wiek w pełnych latach i wyświetla wynik w czytelnej formie.

  3. Zapis do historii Każde obliczenie jest zapisywane do pliku JSON wraz z data wykonania.

Przykładowa struktura pliku JSON:

{
"calculations": [
{
"id": 1,
"name": "Jan Kowalski",
"birth_date": "2008-04-15",
"age_years": 17,
"age_months": 10,
"age_days": 2,
"days_to_birthday": 57,
"created_at": "2026-02-17 10:30:00"
},
{
"id": 2,
"name": "Anna Nowak",
"birth_date": "1990-12-24",
"age_years": 35,
"age_months": 1,
"age_days": 24,
"days_to_birthday": 310,
"created_at": "2026-02-17 11:15:00"
}
]
}

Wymagane funkcje:

  • Formularz z polem: data urodzenia
  • Walidacja danych w PHP (poprawna data, nie z przyszłości)
  • Obliczenie i wyświetlenie wieku w latach
  • Zapis każdego obliczenia do pliku JSON
  • Prosty interfejs CSS (czytelny formularz)

Przykładowy scenariusz:

Użytkownik wchodzi na strone i widzi formularz. Wybiera date urodzenia 15.04.2008 z kalendarza. Po kliknieciu “Oblicz” widzi wynik: “Masz 17 lat”. Obliczenie zostaje zapisane do pliku JSON.

Ocena: 3.0

Walidacja daty urodzenia:

$birthDate = $_POST['birth_date'] ?? '';
$errors = [];
if (empty($birthDate)) {
$errors[] = "Podaj date urodzenia";
} else {
$birth = new DateTime($birthDate);
$today = new DateTime('today');
if ($birth > $today) {
$errors[] = "Data urodzenia nie może być z przyszłości";
}
}

Obliczenie wieku (lata, miesiace, dni):

$birth = new DateTime($birthDate);
$today = new DateTime('today');
$diff = $birth->diff($today);
$years = $diff->y; // Pełne lata
$months = $diff->m; // Pełne miesiace (po odjeciu lat)
$days = $diff->d; // Dni (po odjeciu lat i miesiecy)
echo "Masz $years lat, $months miesiecy i $days dni";

Obliczenie dni do urodzin:

function daysUntilBirthday($birthDate) {
$birth = new DateTime($birthDate);
$today = new DateTime('today');
// Urodziny w tym roku
$birthdayThisYear = new DateTime($today->format('Y') . $birth->format('-m-d'));
// Jeśli urodziny już były, bierz przyszłoroczne
if ($birthdayThisYear < $today) {
$birthdayThisYear->modify('+1 year');
}
return $today->diff($birthdayThisYear)->days;
}

Dzień tygodnia urodzenia:

$birth = new DateTime($birthDate);
$dayOfWeek = $birth->format('l'); // Monday, Tuesday, etc.
// Po polsku:
$daysPolish = [
'Monday' => 'poniedziałek',
'Tuesday' => 'wtorek',
'Wednesday' => 'środa',
'Thursday' => 'czwartek',
'Friday' => 'piątek',
'Saturday' => 'sobota',
'Sunday' => 'niedziela'
];
echo "Urodziłeś się w " . $daysPolish[$dayOfWeek];

Znak zodiaku:

function getZodiacSign($month, $day) {
$signs = [
['Koziorozec', 1, 19], ['Wodnik', 2, 18], ['Ryby', 3, 20],
['Baran', 4, 19], ['Byk', 5, 20], ['Bliznieta', 6, 20],
['Rak', 7, 22], ['Lew', 8, 22], ['Panna', 9, 22],
['Waga', 10, 22], ['Skorpion', 11, 21], ['Strzelec', 12, 21],
['Koziorozec', 12, 31]
];
foreach ($signs as $sign) {
if ($month == $sign[1] && $day <= $sign[2]) {
return $sign[0];
}
if ($month < $sign[1]) {
return $signs[array_search($sign, $signs) - 1][0];
}
}
return 'Koziorozec';
}

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!