Soyez le premier à donner votre avis sur cette source.
Vue 5 751 fois - Téléchargée 373 fois
<?php class DateTime { var $dtime; var $lang; public function __toString() { $date = $this->format(constant("DATE_TIME_FORMAT")); return $date; } public function __construct($time = NOW,$lang='fr') { $this->lang = $lang; $this->dtime = $time; include(dirname(__FILE__)."/lang/".$lang.".php"); } public static function createFromFormat($format, $datetime,$lang='fr') { $j = 0; $dtime["year"] = 0; $dtime["month"] = 0; $dtime["day"] = 0; $dtime["hour"] = 0; $dtime["minute"] = 0; $dtime["second"] = 0; for($i=0;$i<mb_strlen($format);$i++) { switch(mb_substr($format,$i,1)) { case "Y": $dtime["year"] = mb_substr($datetime, $j, 4); $j = $j + 4; break; case "m": $dtime["month"] = mb_substr($datetime, $j, 2); $j = $j + 2; break; case "d": $dtime["day"] = mb_substr($datetime, $j, 2); $j = $j + 2; break; case "H": $dtime["hour"] = mb_substr($datetime, $j, 2); $j = $j + 2; break; case "i": $dtime["minute"] = mb_substr($datetime, $j, 2); $j = $j + 2; break; case "s": $dtime["second"] = mb_substr($datetime, $j, 2); $j = $j + 2; break; default: $j++; break; } } $time = mktime ($dtime["hour"], $dtime["minute"], $dtime["second"], $dtime["month"], $dtime["day"], $dtime["year"]); return new self($time); } //Reçois les paramêtre de formatage de la fonction date() //Gère ceux devant être traduit, et retourne la date formater public function format($format) { $date = ""; for($i=0;$i<mb_strlen($format);$i++) { switch(mb_substr($format,$i,1)) { // jour de la semaine, 3 première lettre case "D": $var = date("N", $this->dtime); $date .= mb_substr(constant("WEEK_$var"),0,3); break; //jour de la semaine case "l": $var = date("N", $this->dtime); $date .= constant("WEEK_$var"); break; //Suffixe ordinal d'un nombre pour le jour du mois, en anglais, sur deux lettres case "S": $var = date("S", $this->dtime); $date .= constant("SUFFIXE_$var"); break; //Nom du mois case "F": $var = date("n", $this->dtime); $date .= constant("MONTH_$var"); break; //Nom du mois, 3 première lettre case "M": $var = date("n", $this->dtime); $date .= mb_substr(constant("MONTH_$var"),0,3); break; //Le prochain caratère va être ignoré case "\\": $i++; $date .= mb_substr($format,$i,1); break; // Caratère ignoré, et remis dans la chaine case ",": $date .= mb_substr($format,$i,1); break; // Caratère ignoré, et remis dans la chaine case ":": $date .= mb_substr($format,$i,1); break; default: $date .= date(mb_substr($format,$i,1), $this->dtime); } } return $date; } } ?>
8 mars 2010 à 12:08
Quelques améliorations / corrections :
- rajout du timezone peut être intéressant (comme ça on affiche l'heure locale)
- modifier le nom de ta classe ou bien prendre en charge les conflits de nommage avec les versions futures
- avoir une version de durée entre 2 dates (permettant d'avoir un truc du style : depuis 1 heure, depuis 5 minutes, depuis 5 jours)
Je pense la ré-utiliser dans certains de mes projets :)
22 févr. 2010 à 21:43
Mais, effectivement, ça fait au moins une bonne raison.
22 févr. 2010 à 06:00
La deuxième, mon hébergeur utilise la version 5.1 de php, et cette class est uniquement implanté a partir de la version 5.3
21 févr. 2010 à 18:19
http://fr.php.net/manual/fr/class.datetime.php
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.