Clase DateTime
La clase DateTime es la herramienta principal para trabajar con fechas y hora en estilo POO. Permite crear objetos de fecha/hora, modificarlos y formatear la salida.
Momento actual
Vamos a crear un objeto DateTime
con la fecha y hora actual:
<?php
$date = new DateTime();
?>
Fecha concreta
Vamos a crear un objeto DateTime con una fecha específica:
<?php
$date = new DateTime('2025-12-31');
?>
Fecha y hora concretas
Vamos a crear un objeto DateTime
con una fecha y hora específicas:
<?php
$date = new DateTime('2025-12-31 12:59:59');
?>
Formateo de salida
La fecha creada se puede mostrar en un formato determinado
con el método format. Vamos a hacer
esto para el momento actual:
<?php
$date = new DateTime();
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 específica
Vamos a formatear una fecha específica:
<?php
$date = new DateTime('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 DateTime('2025-05-15');
$interval = new DateInterval('P10D'); // 10 días
$date->add($interval);
echo $date->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 DateTime('2025-05-15');
$interval = new DateInterval('P1M2D'); // 1 mes y 2 días
$date->sub($interval);
echo $date->format('Y-m-d');
?>
Resultado de la ejecución del código:
'2025-04-13'
Establecimiento de nueva fecha
Se puede establecer una nueva fecha para
el objeto DateTime. Esto se hace
mediante el método setDate:
<?php
$date = new DateTime();
$date->setDate(2025, 12, 31);
echo $date->format('Y-m-d');
?>
Resultado de la ejecución del código:
'2025-12-31'
Establecimiento de hora
Se puede establecer una nueva hora para
el objeto DateTime. Esto se hace
mediante el método setTime:
<?php
$date = new DateTime();
$date->setTime(15, 30, 0);
echo $date->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 DateTime('2025-01-01');
$date2 = new DateTime('2025-02-01');
if ($date1 < $date2) {
echo '+++';
} else {
echo '---';
}
?>
Diferencia entre fechas
Con el método diff se puede calcular
la diferencia entre fechas. La diferencia
se devuelve como un objeto
DateInterval:
<?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 la ejecución del código:
'1 meses 14 días'
Zona horaria
Al crear un objeto DateTime
se puede especificar la zona horaria:
<?php
$timeZone = new DateTimeZone('Europe/Moscow');
$date = new DateTime('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
DateTimeImmutable,
que crea una fecha inmutable -
clase
DateInterval,
que especifica un intervalo temporal -
clase
DateTimeZone,
que especifica una zona horaria