Manipulation de dates SQL avec la classe DateTime
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 :
Code:
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' |
J'ai ajouté dans le trait une méthode __toString permettant de retourner l'objet en chaîne Sql, exemple :
Code:
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' |
Tout le détail est ici :
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