2 votes

Changer élégamment 2011-10-31T16:22:00 en 2011-10-31 en php

Je me demandais si quelqu'un pouvait m'aider à ce sujet. J'utilise la version 5.2.16 de PHP.

Jusqu'à présent, j'ai utilisé une sous-chaîne.

$Date = substr($Date,0,10);
$Date = mysql_real_escape_string($Date);

Je récupère cette chaîne à partir d'une API REST, je n'ai donc aucun contrôle sur son format et je ne suis pas sûr que le "T" au milieu de la chaîne puisse poser un problème.

Maintenant, cela fait le travail assez simplement mais je cherchais à utiliser quelque chose de plus élégant comme

$Date = Date::createFromFormat('Y-m-dTh:i:s', $Date)->format('Y-m-d');

mais cela ne fait que renvoyer l'erreur : Erreur fatale : La classe 'Date' est introuvable dans...

Je suis assez novice en php mais je suppose que j'ai besoin de la classe Date (bon sens) mais comment implémenter cette classe dans mon script ?

Toute aide ou suggestion serait grandement appréciée.

Merci :)

4voto

KingCrunch Points 45168

La classe s'appelle DateTime

$Date = DateTime::createFromFormat('Y-m-dTh:i:s', $Date)->format('Y-m-d');

http://php.net/book.datetime

Cependant, comme le format est normalisé (ISO 8601), il ne devrait pas changer de manière surprenante, il devrait donc être sûr de le diviser simplement en date et heure vous-même.

list ($date, $time) = explode('T', $string);

4voto

Nicola Peluchetti Points 38948

Vous pourriez le faire :

<?php

$Date = strtotime("2011-10-31T16:22:00");

$converted = date("Y-m-d", $Date);

echo ($converted);

?>

Regardez ici http://codepad.org/TNIwXDRp

0voto

Álvaro G. Vicario Points 57607

La classe ne s'appelle pas Date mais DateTime y el createFromFormat() nécessite PHP/5.3 ou plus. Quoi qu'il en soit, le format que vous avez est correctement reconnu par l'application Constructeur donc tout ce dont vous avez besoin est :

<?php

$date = new DateTime('2011-10-31T16:22:00');
echo $date->format('Y-m-d');

0voto

Adam F Points 1354

Vous pouvez soit utiliser substr pour extraire, soit simplement utiliser strtotime. J'ai utilisé les deux et ce sont toutes deux des solutions utiles. strtotime serait mieux si vous aviez également besoin d'extraire l'horodatage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X