Da timestamp a UTC
Il prefisso @ crea una data dai secondi Unix. DateTimeImmutable lascia invariato l'oggetto originale quando cambia il fuso orario.
<?php
$date = new DateTimeImmutable('@1711972800');
echo $date->format('Y-m-d\TH:i:sP');
// 2024-04-01T12:00:00+00:00Visualizzare l'ora a Parigi
$paris = $date->setTimezone(new DateTimeZone('Europe/Paris'));
echo $paris->format('Y-m-d\TH:i:sP');
// 2024-04-01T14:00:00+02:00Da data a timestamp
$date = new DateTimeImmutable('2024-04-01T14:00:00+02:00');
echo $date->getTimestamp(); // 1711972800
// Timestamp attuale in secondi
echo time();Input in millisecondi
Per questo esempio con valore positivo, usa un intero a 64 bit e conserva la frazione con U.u. Il formato u si aspetta sei cifre di microsecondi.
$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('Data non valida');
}
echo $date->format('Y-m-d\TH:i:s.uP');Valida l'input prima di convertirlo. getTimestamp() restituisce secondi interi e non può conservare da solo i microsecondi. L'esempio di divisione precedente è pensato solo per timestamp positivi.
Riferimenti
PHP — formati composti · createFromFormat
Versione italiana pubblicata il 26 settembre 2026.