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

Soyez le premier à donner votre avis sur cette source.

Vue 6 470 fois - Téléchargée 596 fois

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

Ajouter un commentaire

Commentaires

Joelindien27
Messages postés
27
Date d'inscription
vendredi 24 janvier 2003
Statut
Membre
Dernière intervention
19 juillet 2005

Très pratique bravo !
J'avais un peu la flemme de m'en faire une et tu as eu le courage de te creuser la tête et de le mettre en application très bien.
Allez ça vaut bien un 10 ;)
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

merci :) c'est ma première en plus. :)
cs_mehdibou
Messages postés
365
Date d'inscription
vendredi 24 mai 2002
Statut
Membre
Dernière intervention
18 octobre 2004

Même si on a pas besoin de l'utiliser pour les dates, cette source est un très bon exemple pour créer des class
cs_dominion
Messages postés
230
Date d'inscription
mardi 21 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2008

Cool franco jsuis épaté Kiru. Fodra que tu mdonne des cours un de ces 4... ;)
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

comment ça ce fait que la note moyenne ne s'affiche pas ? i lfaut un minimum de x notes pr ça ?
Afficher les 8 commentaires

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.