DateInterval klas-y

DateInterval klas-y PHP-de wagt aralyklary bilen işlemäge mümkinçilik berýär. Ol iki senäniň arasyndaky tapawudy saklamak ýa-da seneler bilen işleýän usullarynda aralyk bellämek üçin ulanylýar. Aralyk aýratyn formatda döredilýär.

Sintaksis

phpDateInterval::__construct(string $duration)

Aralygyň formaty

Format P (period) harpydan we elementlerden ybarat:

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

Bu formada: Y - ýyllar, M - aýlar, D - günler, T - wagtyň bölüji, H - sagatlar, M - minutlar, S - sekuntlar, W - hepdelikler.

Bu harplaryň öňünde degişli görkezijini ýazmaly. Mysal üçin, 3Y üç ýyl manyny berer, 5Y2M bolsa 5 ýyl we 2 aý manyny berer.

Döredilenden soň DateInterval obýekti aşakdaky aýratynlyklary saklar:

php<?php
  $interval->y  // ýyllar
  $interval->m  // aýlar
  $interval->d  // günler
  $interval->h  // sagatlar
  $interval->i  // minutlar
  $interval->s  // sekuntlar
  $interval->f  // mikrosekuntlar
  $interval->invert // 1 eger aralyk ters bolsa
  $interval->days // günleriň sany (eger diff() arkaly döredilense)
?>

Geliň, aralygyň işiniň mysallaryna seredeliň:

Mysal

1 sagat, 45 minut we 30 sekuntlyk aralyk döredeliň:

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

Kodyň ýerine ýetiriliş netijesi:

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

Mysal

3 hepdelik we 2 günlük aralyk döredeliň:

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

Kodyň ýerine ýetiriliş netijesi:

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

Mysal

5 aý, 10 gün we 6 sagatlyk aralyk döredeliň:

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

Kodyň ýerine ýetiriliş netijesi:

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

Mysal

2 ýyl we 15 minutlyk aralyk döredeliň:

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

Kodyň ýerine ýetiriliş netijesi:

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

Mysal

1 gün, 12 sagat we 30 sekuntlyk aralyk döredeliň:

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

Kodyň ýerine ýetiriliş netijesi:

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

Mysal

1 ýyl we 3 aýlyk ters aralyk döredeliň (yza aralyk):

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

Kodyň ýerine ýetiriliş netijesi:

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

Mysal

2 sagat, 30 minutlyk ters aralyk döredeliň (yza aralyk):

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

Kodyň ýerine ýetiriliş netijesi:

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

Mysal

Aralygy häzirki sene goşalyň:

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

Kodyň ýerine ýetiriliş netijesi:

php'2023-01-11'

Mysal

Iki senäniň arasyndaky tapawudy hasaplalyň:

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');
?>

Kodyň ýerine ýetiriliş netijesi:

php'1 months 14 days'

Şeýle-de görüň