Bonjour à tous,
Je me lance dans ma première contribution : la possibilité d'agir sur des dates au format Sql (DATE, DATETIME, TIME, TIMESTAMP) avec la classe DateTime de PHP5.
J'ai créé 4 classes filles de DateTime (une pour chaque type SQL) qui permettent la modification et la comparaison de dates, et qui gèrent également les valeurs nulles SQL (exemple 0000-00-00 00:00:00 qui n'est pas nativement reconnue par la classe DateTime).
Les 4 classes ont des méthodes communes regroupées dans un Trait (compatibilité PHP 5.4 donc, mais aussi compatible PHP > 5.2 en copiant/collant dans chaque classe les méthodes du trait).
Edit : ce n'est plus le cas, une classe abstraite a été utilisée à la place.
Exemple d'utilisation :
J'ai ajouté dans le trait une méthode __toString permettant de retourner l'objet en chaîne Sql, exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 $MaDate = new SqlDateTime('2012-01-03 13:42:05'); var_dump((string) $MaDate); // '2012-01-03 13:42:05' $MaDate -> Modify('- 3 days'); var_dump((string) $MaDate); // '2011-12-31 13:42:05' $MaDate -> Modify('0000-00-00 00:00:00'); var_dump((string) $MaDate); // '0000-00-00 00:00:00' $MaDate -> Modify('- 3 days'); var_dump((string) $MaDate); // '0000-00-00 00:00:00' $MaDate -> Modify('2013-02-06 13:50:55'); var_dump((string) $MaDate); // '2013-02-06 13:50:55' $MaDate -> Modify('+ 2 hours 3 min -2 sec'); var_dump((string) $MaDate); // '2013-02-06 15:53:53'
Tout le détail est ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $MaDate = new SqlDate('now'); // SqlDate correspond au type Sql "Date" : YYYY-MM-DD $MaDate -> Modify('-1 day'); $MesDates = Array($Madate) // $MesDates[0] vaut (string) '2012-03-06'
http://www.couscousboulette.com/2013...bjet-datetime/
Il vous suffit de choper le code source, et d'utiliser les classes SqlDateTime, SqlDate, SqlTime et SqlTimeStamp à la place de DateTime quand vous travaillez avec des données venant de MySql.
Enjoy
Ben
Partager