La clase DateInterval

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

Introducción

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.

Sinopsis de la Clase

class DateInterval {
/* Propiedades */
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;
/* Métodos */
public __construct(string $duration)
public static createFromDateString(string $datetime): DateInterval
public format(string $format): string
}

Propiedades

Advertencia

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.

y

Número de años.

m

Número de meses.

d

Número de días.

h

Número de horas.

i

Número de minutos.

s

Número de segundos.

f

Número de microsegundos, como fracción de un segundo.

invert

Es 1 si el intervalo representa un periodo de tiempo negativo y 0 en caso contrario. Véase DateInterval::format().

days

If the DateInterval object was created by DateTimeImmutable::diff() or DateTime::diff(), then this is the total number of full days between the start and end dates. Otherwise, days will be false.

from_string

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.

date_string

La cadena usada como argumento en DateInterval::createFromDateString().

Historial de cambios

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.

Tabla de contenidos

add a note

User Contributed Notes 2 notes

up
56
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
2
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");
?>
To Top