Bonjour,
Je prépare actuellement quelques class élémentaires pour un nouveau projet dans lequel j'essaye d'utiliser au maximum les class standard de PHP. Parmi elles se trouve la class DateTime() avec laquelle j'ai quelques soucis...
Pour des questions de lisibilités et de limite entre 1901 et 2036, je pensais renoncer à la gestion des dates par timestamp (que je trouvais au demeurant fort pratique) et vais stocker mes dates au format SQL dans les tables (aaaa-mm-jj hh:ii:ss). Je compte stocker toutes les dates en UTC dans la table, alors que l'appli, elle, travaillera en fonction du fuseau horaire de l'utilisateur. Pour info, je vais travailler avec des dates iso-8601, c-a-d par exemple 2013-07-18T16:19:00-0400, ce format intégrant le décalage UTC.
Le problème se situe au niveau de la conversion de la date gérée par DateTime en date SQL qui elle doit être au format UTC...
Les seules solutions que je vois compte tenu des méthode dispo dans cette class, c'est de faire un
Ce qui est fort peu élégant et me remet cette contraintes idiotes entre 1901 et 2036, soit de faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $x = new DateTime($madate); $x = $date->getTimeStamp(); echo gmdate('Y-m-s H:i:s', $x);
ce qui m'oblige à revenir ensuite sur ma timezone, mais là, vu la doc,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $x = new DateTime($madate); $date->setTimezone(new \DateTimeZone('UTC')); echo $this->format('Y-m-s H:i:s');je sais pas comment on fait(edit : j'ai trouvé, il faut choisir dans une liste de code)!!!
Est-ce que cette class est vraiment mal foutu où ai-je raté quelque chose ?
En vous remerciant !
EDIT : d'après la lecture de l'article http://julien-pauli.developpez.com/tutoriels/php/dates/ il semble qu'il faille utiliser la 2eme méthode. Je laisse la question voir si il n'y a pas un moyen plus "court" pour faire ça.
Partager