Klassen DateInterval

Klassen DateInterval giver mulighed for at arbejde med tidsintervaller i PHP. Den bruges til at gemme forskellen mellem to datoer eller til at angive et interval i metoder til arbejde med datoer. Intervallet oprettes i et specielt format.

Syntaks

phpDateInterval::__construct(string $duration)

Intervalformat

Formatet består af bogstavet P (period) og elementer:

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

I dette format: Y - år, M - måneder, D - dage, T - tidsseparator, H - timer, M - minutter, S - sekunder, W - uger.

Før disse bogstaver skal du skrive den tilsvarende værdi. For eksempel vil 3Y betyde tre år, og 5Y2M vil betyde 5 år og 2 måneder.

Efter oprettelse vil objektet DateInterval indeholde følgende egenskaber:

php<?php
  $interval->y  // år
  $interval->m  // måneder
  $interval->d  // dage
  $interval->h  // timer
  $interval->i  // minutter
  $interval->s  // sekunder
  $interval->f  // mikrosekunder
  $interval->invert // 1 hvis intervallet er negativt
  $interval->days // antal dage (hvis oprettet via diff())
?>

Lad os se på intervallets funktion med eksempler:

Eksempel

Lad os oprette et interval på 1 time, 45 minutter og 30 sekunder:

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

Resultat af kodeudførelse:

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

Eksempel

Lad os oprette et interval på 3 uger og 2 dage:

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

Resultat af kodeudførelse:

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

Eksempel

Lad os oprette et interval på 5 måneder, 10 dage og 6 timer:

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

Resultat af kodeudførelse:

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

Eksempel

Lad os oprette et interval på 2 år og 15 minutter:

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

Resultat af kodeudførelse:

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

Eksempel

Lad os oprette et interval på 1 dag, 12 timer og 30 sekunder:

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

Resultat af kodeudførelse:

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

Eksempel

Lad os oprette et negativt interval på 1 år og 3 måneder (interval tilbage):

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

Resultat af kodeudførelse:

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

Eksempel

Lad os oprette et negativt interval på 2 timer, 30 minutter (interval tilbage):

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

Resultat af kodeudførelse:

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

Eksempel

Lad os tilføje et interval til den aktuelle dato:

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

Resultat af kodeudførelse:

php'2023-01-11'

Eksempel

Lad os beregne forskellen mellem to datoer:

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

Resultat af kodeudførelse:

php'1 months 14 days'

Se også

  • klassen DateTime,
    som repræsenterer dato og tid
  • klassen DateTimeZone,
    som repræsenterer tidszone