De timestamp a UTC
El prefijo @ crea una fecha a partir de segundos Unix. DateTimeImmutable mantiene el objeto original intacto cuando se cambia su zona horaria.
<?php
$date = new DateTimeImmutable('@1711972800');
echo $date->format('Y-m-d\TH:i:sP');
// 2024-04-01T12:00:00+00:00Mostrar la hora de París
$paris = $date->setTimezone(new DateTimeZone('Europe/Paris'));
echo $paris->format('Y-m-d\TH:i:sP');
// 2024-04-01T14:00:00+02:00De fecha a timestamp
$date = new DateTimeImmutable('2024-04-01T14:00:00+02:00');
echo $date->getTimestamp(); // 1711972800
// Timestamp actual en segundos
echo time();Entrada en milisegundos
Para este ejemplo con valores positivos, utiliza un entero de 64 bits y conserva la fracción con U.u. El formato u espera seis dígitos de microsegundos.
$ms = 1711972800123;
$seconds = intdiv($ms, 1000);
$micros = ($ms % 1000) * 1000;
$date = DateTimeImmutable::createFromFormat(
'U.u', sprintf('%d.%06d', $seconds, $micros)
);
if ($date === false) {
throw new RuntimeException('Fecha inválida');
}
echo $date->format('Y-m-d\TH:i:s.uP');Valida la entrada antes de convertirla. getTimestamp() devuelve segundos enteros y por sí solo no conserva microsegundos. El ejemplo de división anterior solo se aplica a timestamps positivos.
Referencias
PHP — formatos compuestos · createFromFormat
Versión en español publicada el 26 de septiembre de 2026.