web-dev-qa-db-fra.com

Création de DateTime à partir de l'horodatage dans PHP <5.3

Comment créer un DateTime à partir d'un horodatage dans des versions inférieures à <5.3?

En 5.3, ce serait:

$date = DateTime::createFromFormat('U', $timeStamp);

Le constructeur DateTime veut une chaîne, mais cela n'a pas fonctionné pour moi

$date = new DateTime("@$timeStamp");
58
Yarin

PHP 5> = 5.3.0

$date = new DateTime();
$date->setTimestamp($timeStamp);

Edit: Ajout correct PHP pour setTimestamp

44
Dawid Ohia

En supposant que vous voulez la date et l'heure et pas seulement la date comme dans la réponse précédente:

$dtStr = date("c", $timeStamp);
$date = new DateTime($dtStr);

Cela semble assez idiot de devoir faire ça cependant.

31
Barry Simpson

Cela ne fonctionne pas car votre variable $ timeStamp est vide. Essayez de faire écho à la valeur de $ timeStamp juste avant de créer le DateTime et vous verrez. Si vous exécutez ceci:

new DateTime('@2345234');

Vous n'avez pas d'erreur. Cependant, si vous exécutez:

new DateTime('@');

Il produit l'erreur exacte que vous avez dit qu'il vous donne. Vous devrez effectuer un débogage et découvrir pourquoi $ timeStamp est vide.

14
Jonah

Les oeuvres suivantes:

$dateString = date('Ymd', $timeStamp);
$date = new DateTime($dateString);
3
Yarin