Récupérer un objet DateTime depuis un objet DateTimeImmuntable avec PHP

Publié le 03/01/2023 • Mis à jour le 03/01/2023


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous voyons comment récupérer un objet DateTime depuis un objet DateTimeImmuntable avec PHP. On peut utiliser la fonction setTimestamp() ou la fonction statique createFromImmutable, ce qui est plus élégant à mon avis.


<?php

declare(strict_types=1);

namespace App\Controller\Snippet;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 */
trait Snippet239Trait
{
    public function snippet239(): void
    {
        $date = '2023-01-03';

        // 1. with setTimeStamp
        $immutable = new \DateTimeImmutable($date);
        $mutable = (new \DateTime())->setTimestamp($immutable->getTimestamp());
        echo $mutable->format(\DateTimeInterface::ATOM).PHP_EOL;

        // 2. using createFromImmutable
        $mutable = \DateTime::createFromImmutable($immutable);
        echo $mutable->format(\DateTimeInterface::ATOM).PHP_EOL;

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc  Snippet aléatoire