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 // օրերի քանակը (եթե ստեղծվել է 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 դասը,
    որը ներկայացնում է ժամային գոտի