Du timestamp vers UTC
Le préfixe @ construit une date à partir de secondes Unix. DateTimeImmutable garde l’objet d’origine intact quand on change son fuseau.
<?php
$date = new DateTimeImmutable('@1711972800');
echo $date->format('Y-m-d\TH:i:sP');
// 2024-04-01T12:00:00+00:00Afficher l’heure de Paris
$paris = $date->setTimezone(new DateTimeZone('Europe/Paris'));
echo $paris->format('Y-m-d\TH:i:sP');
// 2024-04-01T14:00:00+02:00De la date vers le timestamp
$date = new DateTimeImmutable('2024-04-01T14:00:00+02:00');
echo $date->getTimestamp(); // 1711972800
// Horodatage courant en secondes
echo time();Une entrée en millisecondes
Pour cet exemple positif, utilisez un entier 64 bits et conservez la fraction avec U.u. Le format u attend six chiffres de microsecondes.
$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('Date invalide');
}
echo $date->format('Y-m-d\TH:i:s.uP');Validez vos entrées avant conversion. getTimestamp() renvoie des secondes entières et ne suffit pas à conserver des microsecondes. L’exemple de division ci-dessus est réservé aux timestamps positifs.