(PHP 5 >= 5.3.0, PHP 7, PHP 8)
Representa un intervalo de fechas.
Un intervalo de fechas almacena o bien una cantidad fija de instantes (en años, meses, días, horas, etc.) o bien una cadena con un instante relativo en el formato que admiten los constructores de DateTimeImmutable y DateTime .
Más especificamente, la información en un objeto de la clase DateInterval es una instrucción para llegar de un instante de fecha/hora a otro instante de fecha/hora. Este proceso no es siempre reversible.
Un modo común de crear un objeto DateInterval es calculando la diferencia entre dos objetos de fecha/hora a través de DateTimeInterface::diff() .
Dado que no hay una forma bien definida de comparar intervalos de fechas, las instancias de DateInterval son incomparables.
El listado de propiedades disponibles que se muestra a continuación depende de la versión de PHP, y deben considerarse como de solo lectura.
Número de años.
Número de meses.
Número de días.
Número de horas.
Número de minutos.
Número de segundos.
Número de microsegundos, como fracción de un segundo.
Es 1 si el intervalo
representa un periodo de tiempo negativo y
0 en caso contrario.
Véase DateInterval::format() .
Si el objeto DateInterval fue creado por
DateTimeImmutable::diff() o
DateTime::diff() , entonces este es el
número total de días completos entre las fechas de inicio y fin. En caso contrario,
days será false .
Si el objeto DateInterval fue creado por
DateInterval::createFromDateString() , entonces
esta propiedad tendrá el valor true , y será establecida la propiedad
date_string. De lo contrario,
el valor será false , y serán establecidas las propiedades y a
f, invert, y
days.
La cadena usada como argumento en DateInterval::createFromDateString() .
| Versión | Descripción |
|---|---|
| 8.2.0 | Se han añadido las propiedades from_string y date_string para las instancias de DateInterval que fueron creadas usando el método DateInterval::createFromDateString() . |
| 8.2.0 |
Solo las propiedades y a f,
invert, y days serán visibles.
|
| 7.4.0 | Ahora las instancias de DateInterval son incomparables; anteriormente, todas las instancias de DateInterval se consideraban iguales. |
| 7.1.0 | Se ha añadido la propiedad 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");
?>