PHP 8.6.0 Beta 1 is available for testing

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 function __construct (string $duration)
public static function createFromDateString (string $datetime): DateInterval
public function 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

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 .

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

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes 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");
?>
+add a note

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