Klass DateInterval

Klassen DateInterval möjliggör arbete med tidsintervall i PHP. Den används för att lagra skillnaden mellan två datum eller för att ange ett intervall i metoder för datumhantering. Intervallet skapas i ett speciellt format.

Syntax

phpDateInterval::__construct(string $duration)

Intervallformat

Formatet består av bokstaven P (period) och element:

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

I detta format: Y - år, M - månader, D - dagar, T - tidsavgränsare, H - timmar, M - minuter, S - sekunder, W - veckor.

Före dessa bokstäver måste motsvarande värde skrivas. Till exempel kommer 3Y att betyda tre år, och 5Y2M kommer att betyda 5 år och 2 månader.

Efter skapandet kommer objektet DateInterval innehålla följande egenskaper:

php<?php
  $interval->y  // år
  $interval->m  // månader
  $interval->d  // dagar
  $interval->h  // timmar
  $interval->i  // minuter
  $interval->s  // sekunder
  $interval->f  // mikrosekunder
  $interval->invert // 1 om intervallet är negativt
  $interval->days // antal dagar (om skapat via diff())
?>

Låt oss titta på hur intervallet fungerar med exempel:

Exempel

Låt oss skapa ett intervall på 1 timme, 45 minuter och 30 sekunder:

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

Resultat av kodkörning:

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

Exempel

Låt oss skapa ett intervall på 3 veckor och 2 dagar:

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

Resultat av kodkörning:

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

Exempel

Låt oss skapa ett intervall på 5 månader, 10 dagar och 6 timmar:

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

Resultat av kodkörning:

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

Exempel

Låt oss skapa ett intervall på 2 år och 15 minuter:

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

Resultat av kodkörning:

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

Exempel

Låt oss skapa ett intervall på 1 dag, 12 timmar och 30 sekunder:

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

Resultat av kodkörning:

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

Exempel

Låt oss skapa ett negativt intervall på 1 år och 3 månader (intervall bakåt):

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

Resultat av kodkörning:

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

Exempel

Låt oss skapa ett negativt intervall på 2 timmar, 30 minuter (intervall bakåt):

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

Resultat av kodkörning:

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

Exempel

Låt oss lägga till ett intervall till det aktuella datumet:

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

Resultat av kodkörning:

php'2023-01-11'

Exempel

Låt oss beräkna skillnaden mellan två datum:

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 av kodkörning:

php'1 months 14 days'

Se även

  • klassen DateTime,
    som representerar datum och tid
  • klassen DateTimeZone,
    som representerar en tidszon