[poo] objet convertissant un nombre de secondes en différents formats. (ex : 'a sem j h min s').

Description

Bonjour, j'ai fais un objet php (ConvertiSecondes) servant à convertir des secondes.
Le zip fournit sur cette page contient un fichier de test que vous pouvez voir a cette adresse :

http://dariumis.webhop.biz/test/duree/

Je ne l'afficherais pas pour ne pas saturer la page de codes. Cet objet retourne les:
Nombre d'années,
Nombre de semaines,
Nombre de jours,
Nombre d'heures,
Nombre de minutes,
Nombre de secondes,

Mais aussi et surtout, pour mettre la durée au format "j h min s", "sem j h min s", "a sem j h min s", "a j h min s" , cet objet retourne :
Nombre de jours dans la dernière année (maxi 365), ou semaines (maxi 7),
Nombre de semaines dans la dernière année (maxi 52),
Nombre d'heure dans la dernière journée (maxi 24),
Nombre de minutes dans la dernière heure (maxi 60),
Nombre de secondes dans la dernière minute (maxi 60),

Les sources sont bien commentées, donc je ne réécrirais pas toutes les explications.

Cet objet prend le nombre de secondes à convertir en paramètre et le nombre de jours que dure une année, comme précisé par neigedhiver, j'ai instancié l'objet à 365.2421875 jours dans l'année pour ce paramètre dans le fichier de test. Chaque valeurs après conversion est retourné par une fonction comme "getNombreAnnee($decimal) " pour le nombre d'années. Elle prend $decimal en paramètre pour indiquer le nombre de chiffres après la virgule à retourner, ainsi, si zéro est renseigné la valeur retourné sera un entier (seul les fonctions retournant des secondes ne prennent pas $decimal).

Source / Exemple :


<?php
/**

  • Cette class permet de convertir un durée exprimé en secondes.
  • Vous pouvez convertir cette durée en:
  • Nombre d'années;
  • Nombre de semaines,
  • Nombre de jours;
  • Nombre d'heures;
  • Nombre de semaines dans année (52 maxi);
  • Nombre de jours dans année (365 maxi);
  • Nombre de jours dans semaine (7 maxi);
  • Nombre d'heures dans journée (23 maxi);
  • Nombre de minutes dans heure (59 maxi);
  • Nombre de secondes dans minute (59 maxi);
*
  • @author Dariumis
  • /
class ConvertiSecondes { //les variables de class private $nombreSemaine; private $nombreAnnee; private $nombreJours; private $nombreHeurs; private $nombreMinutes; private $nombreSecondes; private $heureDansJournee; private $minutesDansHeures; private $secondesDansMinutes; private $joursDansAnnee; private $joursDansSemaine; private $semainesDansAnnee; /**
  • Constructeur de l'objet ConvertiSecondes, cet objet
  • prend en parametre le nombre de secondes, et combien de jours dure votre
  • année.
  • @param $nombreDeSecondes Integer
  • les secondes a convertir.
  • @param $nombreDeJoursDansAnnee Integer,double
  • le nombre de jours d'une l'année.
  • /
public function __construct($nombreDeSecondes,$nombreDeJoursDansAnnee) { /**************************************
  • converti en nombre total
                                                                            • /
//on converti en année et on stock dans la variable de class $this->nombreAnnee=$nombreDeSecondes/(60*60*24*$nombreDeJoursDansAnnee); //on converti en semaines et on stock dans la variable de class $this->nombreSemaine=$nombreDeSecondes/(60*60*24*7); //on converti en jours et on stock dans la variable de class $this->nombreJours=$nombreDeSecondes/(60*60*24); //on converti en heures et on stock dans la variable de class $this->nombreHeurs=$nombreDeSecondes/(60*60); //on converti en minutes et on stock dans la variable de class $this->nombreMinutes=$nombreDeSecondes/60; //on stock les secondes dans la variable de class $this->nombreSecondes=$nombreDeSecondes; /**************************************
  • converti au format
                                                                            • /
//on calcul ce qui reste apres le retrait des années $tampon=$nombreDeSecondes-((60*60*24*$nombreDeJoursDansAnnee)*intval($this->nombreAnnee)); //convertie en nombre de semaines pour la derniere année $this->semainesDansAnnee=$tampon/(60*60*24*7); //convertie en nombre de jours pour la derniere année $this->joursDansAnnee=$tampon/(60*60*24); //on calcul ce qui reste apres le retrait des semaines $tampon=$nombreDeSecondes-(((60*60*24*$nombreDeJoursDansAnnee)*intval($this->nombreAnnee))+((60*60*24*7)*intval($this->semainesDansAnnee))); //convertie en nombre de jours pour la derniere semaines $this->joursDansSemaine=$tampon/(60*60*24); //on calcul ce qui reste apres le retrait des journées $tampon=$nombreDeSecondes-((60*60*24)*intval($this->nombreJours)); //convertie en nombre d'heures pour la derniere journée $this->heureDansJournee=$tampon/(60*60); //on calcul ce qui reste apres le retrait des journées et heures $tampon=$nombreDeSecondes-(((60*60)*intval($this->heureDansJournee))+((60*60*24)*intval($this->nombreJours))); //convertie en nombre d'minutes pour la derniere heures $this->minutesDansHeures=$tampon/60; //on calcul ce qui reste apres le retrait des journées, heures et minutes $this->secondesDansMinutes=$nombreDeSecondes-((60*intval($this->minutesDansHeures))+ (((60*60)*intval($this->heureDansJournee))+((60*60*24)*intval($this->nombreJours)))); } /**
  • fonction retournant la conversion en nombre d'années, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getNombreAnnee($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->nombreAnnee);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->nombreAnnee, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre de semaines, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getNombreSemaine($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->nombreSemaine);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->nombreSemaine, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre de jours, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getNombreJours($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->nombreJours);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->nombreJours, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre d'heures, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getNombreHeures($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->nombreHeurs);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->nombreHeurs, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre de minutes, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getNombreMinutes($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->nombreMinutes);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->nombreMinutes, $decimal,'.', ''); } /**
  • fonction retournant le nombre de seconde.
  • @return Integer.
  • /
public function getNombreSecondes() { return $this->nombreSecondes; } /**
  • fonction retournant la conversion en nombre de jours de 0 a 365, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getJoursDansAnnee($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->joursDansAnnee);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->joursDansAnnee, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre de jours de 0 a 7, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getJoursDansSemaine($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->joursDansSemaine);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->joursDansSemaine, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre de semaines de 0 a 52, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getSemainesDansAnnee($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->semainesDansAnnee);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->semainesDansAnnee, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre d'heure de 0 a 23, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getHeureDansJournee($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->heureDansJournee);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->heureDansJournee, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre de minutes de 0 a 59, elle prend
  • en parametre le nombre de chiffre aprés la virgule, ainsi, si zéro est
  • renseigné la valeur retourné seras un entier.
  • @param $decimal Integer
  • nombre de chiffre apres la virgule
  • @return Integer,double.
  • /
public function getMinutesDansHeures($decimal) { //si l'on veut un entier if($decimal==0) return intval($this->minutesDansHeures);//on retourne la valeur dans un intval //sinon else //on utilise number_format pour formater le valeur puis on retourne return number_format($this->minutesDansHeures, $decimal,'.', ''); } /**
  • fonction retournant la conversion en nombre d'heure de 0 a 59.
  • @return Integer.
  • /
public function getSecondesDansMinutes() { return $this->secondesDansMinutes; } } ?>

Conclusion :


J'ai vu qu'il y avait un peu le même style de codes sur le site, mais je pense que celui-ci diffère relativement de ceux que j'ai pu voir. De plus peut etre que des fonctions, par défaut de php font là même chose, mais si quelqu'un, qui comme moi, n'en a pas connaissance peut être que dans ce cas mon objet sera utile.

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.