PHP 8.6.0 Beta 1 is available for testing

Класс DateInterval

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Введение

Представляет интервалы дат.

Интервал дат хранит либо определённое фиксированное время (в годах, месяцах, днях, часах и т.д.) или относительную строку времени в формате, поддерживаемом конструктором DateTimeImmutable и DateTime .

Более конкретно, информация в объекте класса DateInterval является инструкцией для перехода от одной даты/времени к другой дате/времени. Этот процесс не всегда обратим.

Распространённым способом создания объекта DateInterval является вычисление разницы между двумя объектами даты/времени с помощью DateTimeInterface::diff() .

Поскольку не существует чётко определённого способа сравнения интервалов дат, экземпляры DateInterval являются несравнимыми.

Обзор класса

class DateInterval {
/* Свойства */
public int $y ;
public int $m ;
public int $d ;
public int $h ;
public int $i ;
public int $s ;
public float $f ;
public int $invert ;
public mixed $days ;
/* Методы */
public function __construct (string $duration)
public static function createFromDateString (string $datetime): DateInterval
public function format (string $format): string
}

Свойства

Внимание

Доступные свойства, перечисленные ниже, зависят от версии PHP и должны рассматриваться как доступные только для чтения.

y

Количество лет.

m

Количество месяцев.

d

Количество дней.

h

Количество часов.

i

Количество минут.

s

Количество секунд.

f

Количество микросекунд в виде долей секунды.

invert

Принимает 1, если интервал представляет отрицательный период времени и 0 в противном случае. Смотрите DateInterval::format() .

days

Если объект DateInterval создан методом DateTimeImmutable::diff() или DateTime::diff() , то это общее количество полных дней между начальной и конечной датами В противном случае days примет значение false .

from_string

Если объект DateInterval был создан методом DateInterval::createFromDateString() , то значение свойства будет true и свойство date_string будет заполнено. В противном случае значение свойства будет false и свойства от y до f, invert и days будут заполнены.

date_string

Строка, используемая в качестве аргумента метода DateInterval::createFromDateString() .

Список изменений

Версия Описание
8.2.0 Добавлены свойства from_string и date_string для экземпляров DateInterval, которые были созданы с помощью метода DateInterval::createFromDateString() .
8.2.0 Будут видны только значения от y до f, invert и days.
7.4.0 Экземпляры DateInterval теперь несравнимы; ранее все экземпляры DateInterval считались равными.
7.1.0 Добавлено свойство f.

Содержание

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей 2 notes

up
64
cb
3 years ago
If you want to reverse a date interval use array_reverse and iterator_to_array. I've found using invert to be unreliable.
<?php
$start_date = date_create("2021-01-01");
$end_date = date_create("2021-01-05"); // If you want to include this date, add 1 day
$interval = DateInterval::createFromDateString('1 day');
$daterange = new DatePeriod($start_date, $interval ,$end_date);
function show_dates ($dr) {
 foreach($dr as $date1){
 echo $date1->format('Y-m-d').'<br>';
 }
}
 
show_dates ($daterange);
 
echo '<br>';
// reverse the array
$daterange = array_reverse(iterator_to_array($daterange));
show_dates ($daterange);
 
?>

Gives 
 2021年01月01日
 2021年01月02日
 2021年01月03日
 2021年01月04日
 2021年01月04日
 2021年01月03日
 2021年01月02日
 2021年01月01日
up
1
julio dot necronomicon at gmail dot com
2 years ago
More simple example i use to add or subtract.
<?php
$Datetime = new Datetime('NOW', new DateTimeZone('America/Bahia'));
$Datetime->add(DateInterval::createFromDateString('2 day'));
echo $Datetime->format("Y-m-d H:i:s");
?>
+Добавить

AltStyle によって変換されたページ (->オリジナル) /