(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Представляет интервалы дат.
Интервал дат хранит либо определённое фиксированное время (в годах, месяцах, днях, часах и т.д.) или относительную строку времени в формате, поддерживаемом конструктором DateTimeImmutable и DateTime .
Более конкретно, информация в объекте класса DateInterval является инструкцией для перехода от одной даты/времени к другой дате/времени. Этот процесс не всегда обратим.
Распространённым способом создания объекта DateInterval является вычисление разницы между двумя объектами даты/времени с помощью DateTimeInterface::diff() .
Поскольку не существует чётко определённого способа сравнения интервалов дат, экземпляры DateInterval являются несравнимыми.
Доступные свойства, перечисленные ниже, зависят от версии PHP и должны рассматриваться как доступные только для чтения.
Количество лет.
Количество месяцев.
Количество дней.
Количество часов.
Количество минут.
Количество секунд.
Количество микросекунд в виде долей секунды.
Принимает 1, если интервал представляет
отрицательный период времени и
0 в противном случае. Смотрите
DateInterval::format() .
Если объект DateInterval создан методом
DateTimeImmutable::diff() или DateTime::diff() ,
то это общее количество полных дней между начальной и конечной датами
В противном случае days примет значение false .
Если объект DateInterval был создан методом DateInterval::createFromDateString() ,
то значение свойства будет true и свойство date_string будет заполнено.
В противном случае значение свойства будет false
и свойства от y до f, invert и days будут заполнены.
Строка, используемая в качестве аргумента метода 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. |
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日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");
?>