Il est possible d’avoir plusieurs acceptions au mot "date". Généralement, c’est une représentation de la mesure du temps. On peut mesurer un positionnement (Par ex. nous sommes le 1 janvier 1970 zéro heure). Certains l’entendent comme la mesure entre deux positionnement, c’est à dire, un intervalle, une différence, un écart. (Par ex. le premier avril est trois mois après le premier janvier).
Les dates disposent de plusieurs représentations. Ces représentations peuvent suivre des formats numériques, ou bien alors des formats alphanumériques.
Vous pouvez facilement imaginer la pesanteur engendrée par la gestion des ces représentations, tantôt numérique, tantôt alphabétique, dans des langues différentes, suivant des casses variables, etc.
Le plus pratique. La date est représentée sous la forme d’un entier, dont la valeur est la somme des secondes depuis le premier janvier 1970, 0 heure, 0 minute, 0 seconde.
$ ./php -r "echo 'ts=' . strtotime('now') . ', date=' . date('d/m/Y H:i:s');"
affiche
ts=1175181882, date=29/03/2007 17:24:42
Plus d’information sur Epoch par Wikipedia , et Quel Epoch vivons-nous !
Extrait de la page de la documentation php qui traite des fonctions relatives aux dates et heures. http://fr.php.net/manual/fr/ref.dat...
DATE_ATOM (2005-08-15T15:52:01+0000)
DATE_COOKIE (Mon, 15 Aug 2005 15:52:01 UTC)
DATE_ISO8601 (2005-08-15T15:52:01+0000)
DATE_RFC822 (Mon, 15 Aug 2005 15:52:01 UTC)
DATE_RFC850 (Monday, 15-Aug-05 15:52:01 UTC)
DATE_RFC1036 (Monday, 15-Aug-05 15:52:01 UTC)
DATE_RFC1123 (Mon, 15 Aug 2005 15:52:01 UTC)
DATE_RFC2822 (Mon, 15 Aug 2005 15:52:01 +0000)
DATE_RSS (Mon, 15 Aug 2005 15:52:01 UTC)
DATE_W3C (2005-08-15T15:52:01+0000)
Et ce n’est pas finit ! Des pays ou nation modifie ces formats, notamment en intervertissant les jours, les mois, les années. Les chaînes de caractères sont différentes suivant les langues. Et d’aucun utilise des formats fantaisistes, très librement adaptés, en particulier à partir du format ISO8601, souvent décliné en yyyymmddhhiiss, 20070329172442, ou plus court.
Voir la synthèse de la norme ISO 8601 sur Wikipedia
Le plus simple est d’utiliser tant que faire se peut, surtout pour le stockage, le format Unix Timestamp, malgré ses limitations. Pour cela, il est nécessaire de convertir depuis et vers un format humainement lisible, correctement localisé.
(Le format est-il réellement différent entre Windows et Unix ?)
Les chaînes de caractères doivent être éclatées en entités logiques ; le jour, le mois, l’heure, etc. Pour atteindre ce but, j’utilise une fonction connexe aux expressions rationelles (preg_split() ) et une fonction qui affecte le contenu des cellules d’un tableau vers des variables prédéterminées (list() ).
// definition d'un variable contenant une date avec 3 separateurs differents
$maDate = '29/03/2007 17:24:42';
list($j, $m, $a, $h, $i, $s) = preg_split('/\D+/', $maDate);
Si la date fournie comprend des caractères, par exemple "29 mars 2007 17:24:42", l’expression rationelle sera ’/\W+/’.