Ćwiczenia PHP – praca z datą i czasem

Funkcje date(), time(), mktime(), microtime() oraz współpraca z JavaScript.
INF.03 · klasa 4 TI · 1 lekcja (45 min)

WprowadzeniePo co nam data i czas w PHP?

W aplikacjach webowych daty i czas wykorzystuje się m.in. do logowania zdarzeń, generowania raportów, rejestracji użytkowników, wyświetlania ostatniej aktualizacji oraz pomiaru czasu wykonania fragmentu kodu.

W PHP pracujemy zwykle na znaczkach czasu (Unix timestamp – liczba sekund od 1.01.1970) oraz na sformatowanych ciągach znaków, które pokazujemy użytkownikowi w czytelnej postaci, np. 2026-02-05 10:30:00.

1Aktualny czas serwera – date()

Funkcja date() formatuje aktualną datę i czas na podstawie wewnętrznego zegara serwera. W parametrze przekazujemy wzorzec formatu, np. "Y-m-d H:i:s" (rok-miesiąc-dzień godzina:minuta:sekunda).[web:23][web:29]

<?php
// Aktualny czas serwera w formacie RRRR-MM-DD GG:MM:SS
echo "Aktualny czas serwera: " . date("Y-m-d H:i:s");
?>
            

Zadanie A – różne formaty daty

Zmodyfikuj przykład tak, aby wyświetlić datę w trzech formatach: 2026-02-05, 05.02.2026 oraz podpis słowny, np. 5 lutego 2026.

2Czas serwera a czas lokalny użytkownika

Skrypt PHP zna czas serwera, natomiast zegar lokalny urządzenia użytkownika możemy odczytać po stronie przeglądarki za pomocą JavaScript. Dzięki temu można porównać różnicę między strefą serwera a strefą użytkownika.

<p>
    <?php
    echo "Czas serwera (PHP): " . date("Y-m-d H:i:s");
    ?>
</p>

<p>
    Czas lokalny użytkownika (JavaScript):
    <script>
        document.write(new Date().toLocaleString());
    </script>
</p>
            

Zadanie B – porównanie czasu

Rozbuduj przykład tak, aby użytkownik widział oba czasy obok siebie w prostej tabeli HTML (czas serwera i czas lokalny).

3Unix time – funkcja time()

Funkcja time() zwraca aktualny uniksowy znacznik czasu, czyli liczbę sekund, które upłynęły od 1 stycznia 1970 roku.[web:24][web:26] Taki zapis jest wygodny do obliczeń, porównań i przechowywania dat w bazie.

<?php
$teraz = time();
echo "Unix time (timestamp): " . $teraz;

// Przykład: data za 7 dni od teraz
$za_tydzien = $teraz + 7 * 24 * 60 * 60;
echo "<br>Data za tydzień: " . date("Y-m-d H:i:s", $za_tydzien);
?>
            

Zadanie C – termin ważności

Napisz skrypt, który przyjmuje liczbę dni ważności konta (np. 30 dni), a następnie oblicza datę wygaśnięcia na podstawie aktualnego czasu.

4Tworzenie konkretnej daty – mktime()

Funkcja mktime() tworzy znacznik czasu dla wskazanej daty i godziny na podstawie argumentów: godzina, minuta, sekunda, miesiąc, dzień, rok.[web:22][web:24] Otrzymany znacznik możemy sformatować funkcją date().

<?php
// 15 marca 2025, godzina 12:00:00
$ts = mktime(12, 0, 0, 3, 15, 2025);
echo "Przykładowa data: " . date("Y-m-d H:i:s", $ts);
?>
            

Zadanie D – następne spotkanie

Przyjmij, że spotkanie online odbyło się 1 marca 2026 o godz. 17:00. Oblicz datę następnego spotkania wyznaczonego 14 dni później.

5Precyzyjny pomiar – microtime()

Funkcja microtime(true) zwraca aktualny znacznik czasu z dokładnością do mikrosekund jako liczbę zmiennoprzecinkową.[web:27][web:30] Możemy jej użyć do zmierzenia czasu wykonania fragmentu skryptu.

<?php
$start = microtime(true);

// fragment kodu do zmierzenia
for ($i = 0; $i < 100000; $i++) {
    // prosta operacja
    $x = $i * 2;
}

$end = microtime(true);
$czas = $end - $start;

echo "Czas wykonania pętli: " . round($czas, 6) . " sekundy.";
?>
            

Zadanie E – porównanie dwóch algorytmów

Przygotuj dwa różne fragmenty kodu (np. dwie pętle o innej liczbie iteracji) i zmierz czas ich wykonania. Porównaj wyniki w formie krótkiego raportu.

Materiały: Wprowadzenie do PHP · opracowanie na podstawie wymagań kwalifikacji INF.03 | Autor: Tomasz Puchała (toloki.pl)