Clase DateInterval
La clase DateInterval permite trabajar con intervalos de tiempo en PHP.
Se utiliza para almacenar la diferencia entre dos fechas o para especificar un intervalo
en métodos de trabajo con fechas. El intervalo se crea en un formato especial.
Sintaxis
DateInterval::__construct(string $duration)
Formato del intervalo
El formato consiste en la letra P (period)
y los elementos:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
En este formato: Y - años, M - meses,
D - días, T - separador de tiempo,
H - horas, M - minutos, S - segundos,
W - semanas.
Antes de estas letras es necesario escribir el valor
correspondiente. Por ejemplo, 3Y significará
tres años, y 5Y2M denotará
5 años y 2 meses.
Después de la creación, el objeto DateInterval
contendrá las siguientes propiedades:
<?php
$interval->y // años
$interval->m // meses
$interval->d // días
$interval->h // horas
$interval->i // minutos
$interval->s // segundos
$interval->f // microsegundos
$interval->invert // 1 si el intervalo es negativo
$interval->days // cantidad de días (si se creó mediante diff())
?>
Veamos el funcionamiento del intervalo con ejemplos:
Ejemplo
Creemos un intervalo de 1 hora, 45 minutos y 30 segundos:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Resultado de ejecutar el código:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Ejemplo
Creemos un intervalo de 3 semanas y 2 días:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Resultado de ejecutar el código:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Ejemplo
Creemos un intervalo de 5 meses, 10 días y 6 horas:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Resultado de ejecutar el código:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Ejemplo
Creemos un intervalo de 2 años y 15 minutos:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Resultado de ejecutar el código:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Ejemplo
Creemos un intervalo de 1 día, 12 horas y 30 segundos:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Resultado de ejecutar el código:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Ejemplo
Creemos un intervalo negativo de 1 año y 3 meses (intervalo hacia atrás):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Resultado de ejecutar el código:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Ejemplo
Creemos un intervalo negativo de 2 horas, 30 minutos (intervalo hacia atrás):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Resultado de ejecutar el código:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Ejemplo
Añadamos un intervalo a la fecha actual:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Resultado de ejecutar el código:
'2023-01-11'
Ejemplo
Calculemos la diferencia entre dos fechas:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m meses %d días');
?>
Resultado de ejecutar el código:
'1 meses 14 días'
Ver también
-
clase
DateTime,
que representa fecha y hora -
clase
DateTimeZone,
que representa una zona horaria