0Pricing
PHP Academy · Lekcja

Klasa DateTime

Twórz i modyfikuj daty za pomocą obiektowego API DateTime

Klasa DateTime to bezpłatna lekcja PHP Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej PHP Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs PHP Academy zawiera 4 lekcji w sumie.

DateTime a proceduralne funkcje obsługi dat

PHP oferuje zarówno funkcje proceduralne (date(), strtotime()), jak i obiektowe API DateTime. Podejście obiektowe jest zalecane w przypadku złożonych operacji:

  • DateTime — modyfikowalny obiekt daty i czasu
  • DateTimeImmutable — niezmienny obiekt (bezpieczniejszy w nowoczesnym kodzie)

Tworzenie obiektów DateTime

Twórz obiekty DateTime na podstawie różnych danych wejściowych:

<?php
$now     = new DateTime();                     // current time
$specific = new DateTime('2024-12-25 14:30:00');  // from string
$fromTs  = new DateTime('@' . time());            // from Unix timestamp

echo $now->format('Y-m-d H:i:s');
echo $specific->format('D, d M Y');

// DateTimeImmutable is safer:
$dt = new DateTimeImmutable('2024-01-01');

Formatowanie za pomocą format()

Formatuj obiekt DateTime, używając tych samych znaków formatu co w date():

<?php
$dt = new DateTime('2024-05-27 14:30:00');

echo $dt->format('Y-m-d');           // 2024-05-27
echo $dt->format('H:i:s');           // 14:30:00
echo $dt->format('D d M Y, H:i');    // Mon 27 May 2024, 14:30
echo $dt->format('U');               // Unix timestamp
echo $dt->format(DateTime::ATOM);    // ISO 8601

modify()

Modyfikuj obiekt DateTime za pomocą wyrażenia względnego:

<?php
$dt = new DateTime('2024-01-15');

$dt->modify('+1 month');
echo $dt->format('Y-m-d');  // 2024-02-15

$dt->modify('next Friday');
echo $dt->format('Y-m-d');

// DateTimeImmutable creates new object:
$dt2 = new DateTimeImmutable('2024-01-15');
$dt3 = $dt2->modify('+1 year'); // $dt2 unchanged

createFromFormat()

Analizuj ciąg znaków z datą za pomocą określonego formatu:

<?php
// Parse European date format
$dt = DateTime::createFromFormat('d/m/Y', '25/12/2024');
echo $dt->format('Y-m-d');  // 2024-12-25

// Parse with time
$dt2 = DateTime::createFromFormat('d.m.Y H:i', '27.05.2024 14:30');
echo $dt2->format('c');  // ISO 8601

// Returns false on failure:
$bad = DateTime::createFromFormat('Y-m-d', 'not-a-date');
var_dump($bad);  // bool(false)

Porównywanie obiektów DateTime

Porównuj obiekty DateTime za pomocą operatorów porównania:

<?php
$a = new DateTime('2024-01-01');
$b = new DateTime('2024-12-31');

var_dump($a < $b);   // true
var_dump($a == $b);  // false
var_dump($a > $b);   // false

// Sort an array of DateTime:
$dates = [new DateTime('2024-06-01'), new DateTime('2024-01-01')];
usort($dates, fn($a, $b) => $a <=> $b);
echo $dates[0]->format('Y-m-d');  // 2024-01-01

getTimestamp()

Konwertuj obiekt DateTime na znacznik czasu Unix:

<?php
$dt = new DateTime('2024-12-25');

$ts = $dt->getTimestamp();
echo $ts;  // Unix timestamp for Dec 25 2024

// setTimestamp()
$dt2 = new DateTime();
$dt2->setTimestamp($ts);
echo $dt2->format('Y-m-d');  // 2024-12-25

Ustawianie elementów daty i czasu

Modyfikuj poszczególne elementy obiektu DateTime:

<?php
$dt = new DateTime();

$dt->setDate(2024, 12, 25);
$dt->setTime(23, 59, 59);

echo $dt->format('Y-m-d H:i:s');
// 2024-12-25 23:59:59

// Or chain with DateTimeImmutable:
$dt = (new DateTimeImmutable())
    ->setDate(2024, 12, 25)
    ->setTime(0, 0, 0);

DateTime w praktyce: sprawdzanie subskrypcji

Przykład z rzeczywistej aplikacji: sprawdź, czy subskrypcja jest nadal aktywna:

<?php
function isSubscriptionActive(string $expiresAt): bool {
    $expiry = new DateTimeImmutable($expiresAt);
    $now    = new DateTimeImmutable();
    return $expiry > $now;
}

var_dump(isSubscriptionActive('2025-12-31'));  // true
var_dump(isSubscriptionActive('2020-01-01'));  // false

Biblioteka Carbon

Carbon to popularna biblioteka PHP, która rozszerza DateTime o płynne API:

<?php
// After: composer require nesbot/carbon
use Carbon\Carbon;

$now  = Carbon::now();
$then = Carbon::parse('2024-01-01');

echo $now->diffForHumans($then);  // '5 months after'
echo $now->addWeek()->format('Y-m-d');
echo Carbon::tomorrow()->isWeekday() ? 'weekday' : 'weekend';

// Locale-aware:
Carbon::setLocale('tr');
echo $now->diffForHumans($then); // Turkish

ISO 8601 i DateTime::ATOM

Używaj formatu ISO 8601 w interfejsach API i bazach danych:

<?php
$dt = new DateTime();

// ISO 8601
echo $dt->format('c');              // 2024-05-27T14:30:00+03:00
echo $dt->format(DateTime::ATOM);   // same
echo $dt->format(DateTime::RFC3339); // same family

// For JSON APIs:
$json = json_encode([
    'created_at' => $dt->format(DateTime::ATOM)
]);
echo $json;

Szybki test

Jaka jest kluczowa różnica między DateTime a DateTimeImmutable?

Podsumowanie: klasa DateTime

Najważniejsze informacje o obiektowym API DateTime:

  • new DateTime('date string') do tworzenia obiektów
  • format() do generowania wyniku
  • modify() do wprowadzania zmian względnych
  • createFromFormat() do analizowania niestandardowych formatów
  • Preferuj DateTimeImmutable, aby uniknąć błędów związanych z modyfikacją obiektów
  • Używaj ISO 8601 (DateTime::ATOM) w interfejsach API

Często zadawane pytania

Czy lekcja „Klasa DateTime” jest bezpłatna?

Tak — pełny tekst „Klasa DateTime” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu PHP Academy, przejdź na CoddyKit PRO. Kurs PHP Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Klasa DateTime”?

Twórz i modyfikuj daty za pomocą obiektowego API DateTime Ćwiczysz PHP Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć PHP Academy?

Nie wymagamy żadnego doświadczenia. PHP Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Klasa DateTime”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji PHP Academy?

Tak. Każda lekcja PHP Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Znaczniki czasu Unix i date()
  2. Klasa DateTime
  3. Działania na datach za pomocą DateInterval
  4. Strefy czasowe w PHP
← Powrót do PHP Academy