DateInterval класси

DateInterval класси PHPда вақт интерваллари билан ишлаш имконини беради. У икки сана ўртасидаги фарқни сақлаш ёки саналар билан ишлаш усулларида интервални белгилаш учун ишлатилади. Интервал махсус форматда яратилади.

Синтаксис

phpDateInterval::__construct(string $duration)

Интервал формати

Фмат P (period) ҳарфи ва элементлардан иборат:

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

Бу форматда: Y - йиллар, M - ойлар, D - кунлар, T - вақт ажраткичи, H - соатлар, M - минутлар, S - сониялар, W - ҳафталар.

Бу ҳарфлар олдида мос келган қийматларни ёзиш керак. Масалан, 3Y уч йилни англатади, 5Y2M эса 5 йил ва 2 ойни англатади.

Яратилгандан сўнг DateInterval объекти куйидаги хоссаларни ўз ичига олади:

php<?php
  $interval->y  // йиллар
  $interval->m  // ойлар
  $interval->d  // кунлар
  $interval->h  // соатлар
  $interval->i  // минутлар
  $interval->s  // сониялар
  $interval->f  // микросониялар
  $interval->invert // 1 агар интервал манфий бўлса
  $interval->days // кунлар сони (agar diff() орқали яратилган бўлса)
?>

Келгина, интервалнинг ишлашини мисолларда кўрамиз:

Мисол

1 соат, 45 минут ва 30 сониялик интервал яратамиз:

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

Кодни бажариш натижаси:

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

Мисол

3 ҳафта ва 2 кунлик интервал яратамиз:

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

Кодни бажариш натижаси:

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

Мисол

5 ой, 10 кун ва 6 соатлик интервал яратамиз:

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

Кодни бажариш натижаси:

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

Мисол

2 йил ва 15 минутлик интервал яратамиз:

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

Кодни бажариш натижаси:

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

Мисол

1 кун, 12 соат ва 30 сониялик интервал яратамиз:

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

Кодни бажариш натижаси:

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

Мисол

1 йил ва 3 ойлик манфий интервал яратамиз (орқага интервал):

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

Кодни бажариш натижаси:

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

Мисол

2 соат, 30 минутлик манфий интервал яратамиз (орқага интервал):

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

Кодни бажариш натижаси:

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

Мисол

Жорий санага интервал қўшамиз:

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

Кодни бажариш натижаси:

php'2023-01-11'

Мисол

Икки сана ўртасидаги фарқни ҳисоблаймиз:

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

Кодни бажариш натижаси:

php'1 months 14 days'

Шунингдек қаранг

  • DateTime класси,
    сана ва вақтни тасвирловчи
  • DateTimeZone класси,
    вақт зонасини тасвирловчи