227 of 410 menu

Klasa DateInterval

Klasa DateInterval umożliwia pracę z przedziałami czasowymi w PHP. Jest używana do przechowywania różnicy między dwiema datami lub do określania przedziału w metodach pracy z datami. Przedział jest tworzony w specjalnym formacie.

Składnia

DateInterval::__construct(string $duration)

Format przedziału

Format składa się z litery P (period) i elementów:

P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W

W tym formacie: Y - lata, M - miesiące, D - dni, T - separator czasu, H - godziny, M - minuty, S - sekundy, W - tygodnie.

Przed tymi literami należy wpisać odpowiednią wartość. Na przykład, 3Y będzie oznaczać trzy lata, a 5Y2M będzie oznaczać 5 lat i 2 miesiące.

Po utworzeniu obiekt DateInterval będzie zawierał następujące właściwości:

<?php $interval->y // lata $interval->m // miesiące $interval->d // dni $interval->h // godziny $interval->i // minuty $interval->s // sekundy $interval->f // mikrosekundy $interval->invert // 1 jeśli przedział jest ujemny $interval->days // liczba dni (jeśli utworzono przez diff()) ?>

Przyjrzyjmy się działaniu przedziału na przykładach:

Przykład

Utwórzmy przedział 1 godziny, 45 minut i 30 sekund:

<?php $interval = new DateInterval('PT1H45M30S'); var_dump($interval); ?>

Wynik wykonania kodu:

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 0 'h' => 1 'i' => 45 's' => 30 )

Przykład

Utwórzmy przedział 3 tygodni i 2 dni:

<?php $interval = new DateInterval('P3W2D'); var_dump($interval); ?>

Wynik wykonania kodu:

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 23 'h' => 0 'i' => 0 's' => 0 )

Przykład

Utwórzmy przedział 5 miesięcy, 10 dni i 6 godzin:

<?php $interval = new DateInterval('P5M10DT6H'); var_dump($interval); ?>

Wynik wykonania kodu:

DateInterval Object ( 'y' => 0 'm' => 5 'd' => 10 'h' => 6 'i' => 0 's' => 0 )

Przykład

Utwórzmy przedział 2 lat i 15 minut:

<?php $interval = new DateInterval('P2YT15M'); var_dump($interval); ?>

Wynik wykonania kodu:

DateInterval Object ( 'y' => 2 'm' => 0 'd' => 0 'h' => 0 'i' => 15 's' => 0 )

Przykład

Utwórzmy przedział 1 dzień, 12 godzin i 30 sekund:

<?php $interval = new DateInterval('P1DT12H30S'); var_dump($interval); ?>

Wynik wykonania kodu:

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 1 'h' => 12 'i' => 0 's' => 30 )

Przykład

Utwórzmy ujemny przedział 1 roku i 3 miesięcy (przedział wstecz):

<?php $interval = new DateInterval('P1Y3M'); $interval->invert = 1; var_dump($interval); ?>

Wynik wykonania kodu:

DateInterval Object ( 'y' => 1 'm' => 3 'd' => 0 'h' => 0 'i' => 0 's' => 0 'invert' => 1 )

Przykład

Utwórzmy ujemny przedział 2 godzin, 30 minut (przedział wstecz):

<?php $interval = new DateInterval('PT2H30M'); $interval->invert = 1; var_dump($interval); ?>

Wynik wykonania kodu:

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 0 'h' => 2 'i' => 30 's' => 0 'invert' => 1 )

Przykład

Dodajmy przedział do bieżącej daty:

<?php $date = new DateTime('2023-01-01'); $interval = new DateInterval('P10D'); $date->add($interval); echo $date->format('Y-m-d'); ?>

Wynik wykonania kodu:

'2023-01-11'

Przykład

Obliczmy różnicę między dwiema datami:

<?php $date1 = new DateTime('2023-01-01'); $date2 = new DateTime('2023-02-15'); $interval = $date1->diff($date2); echo $interval->format('%m months %d days'); ?>

Wynik wykonania kodu:

'1 months 14 days'

Zobacz też

  • klasa DateTime,
    która reprezentuje datę i czas
  • klasa DateTimeZone,
    która reprezentuje strefę czasową
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć