Class de date en français (assez complet) avec fichier d'aide

Description

Cette classe PHP sert à manipuler des dates et à les afficher sous différents formats en français. Vous pouvez avancer de un jour, un mois, une année, reculer, récupérer le jour de la semaine, adapter une date mysql (transofrmer de mysql en objet frdate ou inversément), ...

Quoi que vous fassiez, les dates sont toujours corrigées pour rester correctes. Ainsi, définir une date comme 29 février 1985 donnera la date 1er mars 1985. 31 avril 2003 donnera 1er mai 2003 etc...
  • modification du 11 décembre 2003* j'ai mis à niveau 1, je sais pas ce qui m'a pris de mettre 2, lol :-P

Source / Exemple :


//NOTE tout est dans le zip, avec le fichier d'aide complet (Class frdate.chm)

<?
/*
  Name: Class frdate
  Contact: nicolasboumal@hotmail.com
  Description: Classe PHP gérant les dates en français.
  Date: 07/02/2003

  • /
//class pour utiliser les dates (en français) class frdate { //utilisées par la classe var $ARRAYjours = array("dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"); var $ARRAYmois = array(1 => "janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"); //variables des éléments var $temps; //le timestamp var $annee; //l'année en 4 chiffres var $mois; //le mois en chiffres var $jour; //le jour du mois en chiffres var $heure; //l'heure var $minute; //la minute var $seconde; //la seconde var $mois_0; //le mois avec le zéro si nécessaire var $jour_0; //le jour du mois avec le zéro initial var $mois_litt; //le mois en lettres var $jour_litt; //le jour de la semaine en lettres //constructeur function frdate() { $this->temps(); //la date par défaut est celle du jour } //fonction appelée par les fonctions de la classe pour mettre les variables à jour d'après le temps function maj() { $this->annee = date("Y", $this->temps); $this->mois = date("n", $this->temps); $this->jour = date("j", $this->temps); $this->heure = date("H", $this->temps); $this->minute = date("i", $this->temps); $this->seconde = date("s", $this->temps); $this->mois_0 = date("m", $this->temps); $this->jour_0 = date("d", $this->temps); $this->mois_litt = $this->ARRAYmois [date("n", $this->temps)]; $this->jour_litt = $this->ARRAYjours[date("w", $this->temps)]; } //met le temps à jour en fonction des variables function maj_temps() { $this->temps = mktime($this->heure, $this->minute, $this->seconde, $this->mois, $this->jour, $this->annee); $this->maj(); } //l'objet prends la date actuelle ou un timestamp function temps($ts=0) { if(!$ts) $ts = time(); $this->temps = $ts; $this->maj(); } //avance dans le temps function avance($val, $variable) { $this->$variable += $val; $this->maj_temps(); } //recul dans le temps function recule($val, $variable) { $this->$variable -= $val; $this->maj_temps(); } //définis un paramètre en conservant les autres (plus sur que de changer la variable) //PAS POUR MODIFIER LA VARIABLE TEMPS (timestamp), voir temps() function set($variable, $valeur) { $this->$variable = $valeur; $this->maj_temps(); } //fonction pour paramètrer rapidemment une date en ayant pas de timestamp function multiset($jour=1, $mois=1, $annee=1970, $heure=0, $minute=0, $seconde=0) { $this->temps = mktime($heure, $minute, $seconde, $mois, $jour, $annee); $this->maj(); } //retourne la date en long (litt pr la version en toutes lettres, num pour la version numérique. jour 0 pr ne pas afficher le nom du jour function date($type="litt", $sep='/', $jr=1) { if($type == "litt") { if($jr) $jr_litt = $this->jour_litt." "; else $jr_litt = ""; return $jr_litt.$this->jour." ".$this->mois_litt." ".$this->annee; } elseif($type == "num") return $this->jour_0.$sep.$this->mois_0.$sep.$this->annee; } //retourne l'heure en long (si pas de séparateur -> h m s) sec pour l'affichage ou non des secondes, avec ou non le s après les secondes function heure($sep='', $sec=0, $sep_sec=0) { $heure; $heure .= $this->heure; if($sep) $heure .= $sep; else $heure .= "h"; $heure .= $this->minute; if($sec) { if($sep) $heure .= $sep; else $heure .= "m"; $heure .= $this->seconde; if($sep_sec) $heure .= "s"; } return $heure; } //mix des fonctions date et heure, avec le séparateur entre les deux function dateheure($sep=", ") { return $this->date().$sep.$this->heure(); } //retourne une date au format MySQL. date, time et datetime function date_mysql($type="datetime") { if($type == "datetime") return $this->annee."-".$this->mois_0."-".$this->jour_0." ".$this->heure.":".$this->minute.":".$this->seconde; elseif($type == "time") return $this->heure.":".$this->minute.":".$this->seconde; elseif($type == "date") return $this->annee."-".$this->mois_0."-".$this->jour_0; } //transforme une date MySQL en objet de cette classe function prends_mysql($date_mysql) { if(strlen($date_mysql) == 8) //c'est un TIME MySQL { $heure = substr($date_mysql, 0, 2); $minute = substr($date_mysql, 3, 2); $seconde = substr($date_mysql, 6, 2); $this->multiset(1,1,1970, $heure, $minute, $seconde); } elseif(strlen($date_mysql) == 10) //c'est un DATE MySQL { $annee = substr($date_mysql, 0, 4); $mois = substr($date_mysql, 5, 2); $jour = substr($date_mysql, 8, 2); $this->multiset($jour, $mois, $annee); } elseif(strlen($date_mysql) == 19) //c'est un DATETIME MySQL { $annee = substr($date_mysql, 0, 4); $mois = substr($date_mysql, 5, 2); $jour = substr($date_mysql, 8, 2); $heure = substr($date_mysql, 11, 2); $minute = substr($date_mysql, 14, 2); $seconde = substr($date_mysql, 17, 2); $this->multiset($jour, $mois, $annee, $heure, $minute, $seconde); } $this->maj(); } //vérifie si la date est bonne. (mais normalement ça ne peut pas être invalide) function valide() { return checkdate($this->mois, $this->jour, $this->annee); } } ?>

Conclusion :


Voyez le fichier d'aide pour des détails sur toutes les variables et fonctions de la class.

Pour l'utiliser, faites un include("frdate.php"); dans votre page (au début). Le fichier doit alors être dans le même répertoir que votre page.

Des exemples d'utilisation sont fournis dans le fichier.

Bon amusement, laissez vos commentaires, j'essayerai d'améliorer en fonction.

Ciao

Codes Sources

A voir également

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.