Clase DateTimeImmutable
La clase DateTimeImmutable es un análogo inmutable de DateTime. Crea un nuevo objeto con cualquier modificación, lo que lo hace más predecible y seguro para trabajar.
Momento actual
Vamos a crear un objeto DateTimeImmutable
con la fecha y hora actuales:
<?php
$date = new DateTimeImmutable();
?>
Fecha específica
Vamos a crear un objeto DateTimeImmutable con una fecha especificada:
<?php
$date = new DateTimeImmutable('2025-12-31');
?>
Fecha y hora específicas
Vamos a crear un objeto DateTimeImmutable
con una fecha y hora especificadas:
<?php
$date = new DateTimeImmutable('2025-12-31 12:59:59');
?>
Formateo de salida
La fecha creada se puede mostrar en un formato determinado
usando el método format. Vamos a hacer
esto para el momento actual:
<?php
$date = new DateTimeImmutable();
echo $date->format('Y-m-d H:i:s');
?>
Resultado (cambiará dependiendo del momento de ejecución):
'2025-11-15 14:25:00'
Formateo de fecha especificada
Vamos a formatear una fecha especificada:
<?php
$date = new DateTimeImmutable('2025-12-31');
echo $date->format('d.m.Y');
?>
Resultado de la ejecución del código:
'31.12.2025'
Adición de intervalo
La adición de un intervalo a una fecha
se realiza mediante el método add:
<?php
$date = new DateTimeImmutable('2025-05-15');
$interval = new DateInterval('P10D'); // 10 días
$newDate = $date->add($interval);
echo $newDate->format('Y-m-d');
?>
Resultado de la ejecución del código:
'2025-05-25'
Sustracción de intervalo
La sustracción de un intervalo de una fecha
se realiza mediante el método sub:
<?php
$date = new DateTimeImmutable('2025-05-15');
$interval = new DateInterval('P1M2D'); // 1 mes y 2 días
$newDate = $date->sub($interval);
echo $newDate->format('Y-m-d');
?>
Resultado de la ejecución del código:
'2025-04-13'
Establecer nueva fecha
Se puede establecer una nueva fecha para
el objeto DateTimeImmutable. Esto se hace
mediante el método setDate:
<?php
$date = new DateTimeImmutable();
$newDate = $date->setDate(2024, 12, 31);
echo $newDate->format('Y-m-d');
?>
Resultado de la ejecución del código:
'2024-12-31'
Establecer hora
Se puede establecer una nueva hora para
el objeto DateTimeImmutable. Esto se hace
mediante el método setTime:
<?php
$date = new DateTimeImmutable();
$newDate = $date->setTime(15, 30, 0);
echo $newDate->format('H:i:s');
?>
Resultado de la ejecución del código:
'15:30:00'
Comparación de fechas
Se pueden comparar objetos con fechas:
<?php
$date1 = new DateTimeImmutable('2025-01-01');
$date2 = new DateTimeImmutable('2025-02-01');
if ($date1 < $date2) {
echo '+++';
} else {
echo '---';
}
?>
Creación de objeto con zona horaria
Al crear un objeto DateTimeImmutable
se puede especificar la zona horaria:
<?php
$timeZone = new DateTimeZone('Europe/Moscow');
$date = new DateTimeImmutable('2025-12-31 23:59:59', $timeZone);
echo $date->format('Y-m-d H:i:s e');
?>
Resultado de la ejecución del código:
'2025-12-31 23:59:59 Europe/Moscow'
Ver también
-
clase
DateInterval,
que establece un intervalo de tiempo -
clase
DateTimeZone,
que establece una zona horaria