Przejdź do głównej zawartości

22. Praca z datami i czasem w PHP

Praca z datami i czasem w PHP

Daty są wszędzie w aplikacjach webowych: terminy zamówień, daty urodzenia, harmonogramy. PHP oferuje klasy DateTime, DateInterval i DateTimeZone do bezpiecznej, obiektowej pracy z czasem — bez ręcznych obliczeń na sekundach Unix.

  1. Dlaczego DateTime zamiast strtotime()? — bezpieczeństwo, czytelność, strefy czasowe
  2. Jak obliczać różnicę między datami?DateInterval i metoda diff()
  3. Jak formatować datę po polsku?IntlDateFormatter lub ręczne tłumaczenie
  1. Timestamp Unix — co to jest i kiedy go używać
  2. Klasa DateTime — tworzenie, parsowanie, formatowanie
  3. DateTime::createFromFormat() — bezpieczne parsowanie z walidacją
  4. DateInterval — reprezentacja okresu czasu
  5. Obliczanie różnicy dat — metoda diff()
  6. Strefy czasowe — DateTimeZone, date_default_timezone_set()
  7. Praktyczne przykłady: wiek, dni do eventu, termin ważności

Tabela formatów

Tabela liter formatowania: Y, m, d, H, i, s z przykładami

Przykład diff()

Kod obliczający wiek lub dni do urodzin

Minimum:

  • Klasa DateTime: tworzenie i formatowanie
  • Funkcja date() vs obiektowe API
  • Jeden praktyczny przykład

Forma: 10 slajdów, 10 minut

Ocena: 3.0
<?php
// Tworzenie obiektu DateTime
$now = new DateTime();
$birthday = new DateTime('1990-05-15');
$future = DateTime::createFromFormat('d.m.Y', '25.12.2026');
// Formatowanie
echo $now->format('d.m.Y H:i:s'); // 04.03.2026 14:30:00
echo $birthday->format('Y-m-d'); // 1990-05-15
// Obliczanie różnicy (wiek)
$age = $birthday->diff(new DateTime());
echo "Wiek: {$age->y} lat";
// Dni do Świąt Bożego Narodzenia
$christmas = new DateTime('2026-12-25');
$diff = (new DateTime())->diff($christmas);
echo "Do Świąt: {$diff->days} dni";
// Dodawanie okresu
$deadline = new DateTime();
$deadline->add(new DateInterval('P30D')); // +30 dni
echo "Termin: " . $deadline->format('Y-m-d');
// Strefy czasowe
$utc = new DateTime('now', new DateTimeZone('UTC'));
$warsaw = clone $utc;
$warsaw->setTimezone(new DateTimeZone('Europe/Warsaw'));
echo "UTC: " . $utc->format('H:i') . " | Warszawa: " . $warsaw->format('H:i');

Zacznij od problemu

Pokaż błąd przy ręcznym dodawaniu dni: date('Y-m-d', strtotime('+1 month')) w lutym

Tabela formatów

Przygotuj slajd z tablicą najpopularniejszych liter formatu — Y, m, d, H, i, s