begin process at 2012 05 27 18:05:24
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > [POO] OBJET CONVERTISSANT UN NOMBRE DE SECONDES EN DIFFÉRENTS FORMATS. (EX : 'A SEM J H MIN S').

[POO] OBJET CONVERTISSANT UN NOMBRE DE SECONDES EN DIFFÉRENTS FORMATS. (EX : 'A SEM J H MIN S').


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :Class, conversion, secondes, objet Niveau :Débutant Date de création :27/10/2010 Date de mise à jour :28/10/2010 15:44:11 Vu / téléchargé :2 195 / 108

Auteur : Dariumis

Ecrire un message privé
Site perso
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
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

  • <?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;
  • }
  • }
  • ?>
<?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.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

27 octobre 2010 16:58:17 :
corrections
27 octobre 2010 17:06:45 :
test possibilité de mettre des liens.
27 octobre 2010 17:09:27 :
bon ben le bbcode ne marche pas pour les liens
27 octobre 2010 17:13:44 :
essaye de mettre un peu en page.
28 octobre 2010 15:44:11 :
ajout de paramètre dans constructeur.

 Sources du même auteur

Source avec Zip Source avec une capture VOIR QUI VISITE VOTRE SITE
ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET
Source avec Zip Source avec une capture MYPHPCOM 2.1: SYSTÈME DE COMMENTAIRE PHP/MYSQL
Source avec Zip Source avec une capture [POO] FENÊTRE D'ALERTE AVEC DES DIV.
Source avec Zip Source avec une capture [POO] MENU XHTML HORIZONTAL EXTENSIBLE (MENUEXTENSIBLEX.PHP)

 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture [POO] MENU XHTML HORIZONTAL EXTENSIBLE (MENUEXTENSIBLEX.PHP) par Dariumis
Source avec Zip CLASSE SQL par benjycorp
Source avec Zip CATAPULT FRAMEWORK, VERSION 0.1 : "ORIGIN" par codefalse
Source avec Zip GERER UN ENTREPOT VIA PHP 5 MYSQL VERSION OBJET ( PDO) par fabienenvac
CLASSE DE REDIMENSION D'IMAGE. par Yaug

Commentaires et avis

Commentaire de neigedhiver le 28/10/2010 00:30:33

Salut,

"* Nombre de jours dans année (365 maxi); "
C'est dommage, la valeur décimale d'une année est 365,242 187 5 jours, soit 365 jours 5 heures 48 minutes 45 secondes

Je suis désolé, je ne vais pas pouvoir faire l'éloge de ton code source, malgré toute la bonne volonté dont tu as fait preuve... Effectivement, on peut faire ça avec des fonctions natives. Mais au contraire de toi, je pense qu'il est préférable d'utiliser des fonctions natives que l'on trouve quand on prend la peine de lire la doc, plutôt que d'exécuter du code aussi long en PHP (forcément moins performant que des fonctions et objéts codés en C).

<?php
date_default_timezone_set('Europe/Paris');
$diff = date_diff(new Date('@0'), new Date('@1288189934'));

echo $diff -> format ('%y années %d jours %h heures %m minutes %s secondes');
?>

Deux choses à propos du code que je propose :
- il ne fonctionne que pour PHP 5.3 et + (mais qui de nos jours utilise encore PHP 5.2 ?)
- il n'est pas totalement juste, puisqu'il part de la date du 1er janvier 1970 à minuit. Mais il n'est pas plus faux que le tien... Au contraire, il montre comment calculer juste, c'est à dire en calculant un nombre de secondes comme étant la différence entre deux dates : autrement, ça n'a pas de sens, tous les mois n'ayant pas le même nombre de jours, toutes les années n'ayant pas le même nombre de jours non plus, et même certains siècles ou millénaires n'ont pas le même nombre d'années... Alors bon...

En d'autres terme, cette fonction est déjà implémentée dans PHP 5.3 de base et de manière plus juste et plus rigoureuse que ce que tu offres avec ta classe. Je dois reconnaître une chose cependant : j'apprécie l'effort que tu as fait dans la présentation de ton code lequel a le gros avantage sur de nombreuses sources publiées ici d'être facilement réutilisable (même si je n'ai pas bien compris le fonctionnement de la méthode getSemainesDansAnnee() et de ses copines qui lui ressemblent).

Commentaire de dark_nemo le 28/10/2010 12:26:59

Salut,
Juste un détail en passant. Une année c'est 365 jours et 6 heures(c'est pour ça qu'il y a le 29 février une fois tout les 4ans).
Bonne continuation

Commentaire de Dariumis le 28/10/2010 12:51:44

Hey hey!!! Merci pour vos commentaires, ça me fait plaisir d'avoir vos réactions. C'est vrai que je me suis dit qu'une année ne faisait pas 365 jours tout rond, mais c'est vrai que je l'ai mis dans un coin de ma tête, et que sans trop d'efforts j'ai réussi a "l'oublier" lol. Après je pense qu'il suffit de changer la valeurs de tous les 365 du constructeur pour arriver a ce résultat, mais il faudrait que teste, il aurait peut être était bien que je rajoute un paramètre au constructeur permettant d'initialiser le nombre d'année. C'est vrai que ce code parait long, mais c'est parce qu'il y a  beaucoup de commentaires, en fait je voulais voir si on pouvait générer la doc avec netbeans, a la manière de la javadoc pour java, mais j'ai pas trouvé ):.

Les fonctions "getJoursDansSemaine" et ses copines sont les fonctions qui a mon sens représente l'intérêt de l'objet, une fois que le nombre de jours arrive a 8 la semaine prend 1, c'est pour dire la durée fait "2 semaine et 6 jours", puis "2 semaine et 7 jours",puis "3 semaine et 0 jours" par exemple. Il y a le fichier de test qui montre bien ça avec les temps au format "j h min s"...

Merci beaucoup pour les infos et d'avoir pris le temps de répondre, dès que j'ai un peu de temps j'essayerais d'améliorer tous ça.

Commentaire de neigedhiver le 28/10/2010 13:49:12

@Dark Nemo : non, une année, c'est 365,2421875 jours, soit 365 jours 5 heures 48 minutes et 45 secondes (c'est la durée la plus scientifiquement exacte, source Wikipedia).
C'est pour ça que les années multiples de 100 ne sont pas bissextiles (et c'est aussi pour ça que tous les siècles n'ont pas forcément le même nombre d'années...)
Mais j'ai comme l'impression de l'avoir déjà écrit. Pardon de me répéter.

Commentaire de dark_nemo le 28/10/2010 15:47:37

Oui mais 365 jours 5 heures 48 minutes et 45 secondes. C'est une estimation qui a elle aussi une marge d'erreur car la rotation de la terre d'une année sur l'autre n'est pas une elipse parfaite (d'où les hivers et été plus ou moins chaud, ère glacière etc). C'est pour ça que certaine année on rajoute ou retire quelques minutes. La véritable durée d'une année serait celle basée sur l'horloge atomique (faut voir comment est gérer l'heure sur nos serveurs) mais bon c'est chopiter et dans l'absolu t'as raison ^^. D'où la complexité de manipuler les dates soit même.

Enfin pour en revenir à la vrai question qui nous intéresse, je pense qu'une classe héritant de DateTime(http://www.php.net/manual/fr/class.datetime.php) serait peut-être plus juste (je n'ai pas de retour d'expériences de beaucoup de monde dessus, mais moi je n'ai jamais eu de problème avec et ça fonctionne bien)

Commentaire de Dariumis le 28/10/2010 16:35:53

J'ai rajouté un parametre dans le constructeur, pour dire le nombre de jours que contient une année, comme ça chacun est libre. je voulais mettre deux constructeur mais apparemment ça marche pas. J'ai mis le fichier de teste a 365,2421875 jours/an, comme ça c'est plus précis^^.

Commentaire de neigedhiver le 28/10/2010 17:29:10

T'as retenu le seul commentaire que je faisais qui était anecdotique... C'est dommage, les autres me paraissaient plus constructifs.

Commentaire de thibautg le 28/10/2010 19:10:59

@neigedhiver : Je suis fondamentalement d'accord sur ton commentaire, et le fait d'utiliser autant que possible les fonctions natives de php. Cependant pour php5.3 je suis vraiment pas d'accord, je dirais plutôt que l'on est peu sous php5.3, déjà que certains hébergeur sont toujours sous php4 avec option php5, n'allons pas trop vite ... Il est de nature que la masse humaine suis souvent l'évolution que avec retard.

Commentaire de papounet69 le 01/11/2010 11:55:34

Ceci n'est pas un commentaire direct sur ce code mais plutôt une question :
- Vous travaillez en fait sur la base de dates UNIX qui débutent au 1/1/1970 à 0 h. Ceci est très pratique pour des calculs de dates récentes. Or les généalogistes sont souvent amener à comparer des dates beaucoup plus anciennes ! je ne parle pas des différents calendriers. Je pose donc le problème des comparaisons de dates < 1970 codées dans un calendrier donné (par exemple le calendrier grégorien actuellement utilisé en Europe). Connaissez une libraire (ou des scripts) capables de calculer par exemple la différence entre "20/11/1657" et "12/01/1723" ?
- Connaissez vous des scripts capables de comparer des dates incomplètes ou approchées comme : "20/11/1657" et "4/1654" , "~4/1645" ou (c) 4/1645" ou "> 4/1645" ? C'est un des problèmes rencontrés par les généalogistes qui cherchent à comparer des données.
Merci pour vos idées.

Commentaire de neigedhiver le 01/11/2010 14:30:09

@Papounet69 : Et un jour l'informatique a commencé à utiliser des nombres entiers naturels...

<?php
date_default_timezone_set('Europe/Paris');
echo strtotime('1950/10/31');
?>

Affiche : -604976400

C'est beau.

Commentaire de neigedhiver le 01/11/2010 14:38:38

Bon d'accord, ça remonte pas avant le 13 décembre 1901 à 20h55 et 13s...

La comparaison de dates n'est absolument pas un problème. Le vrai problème ce sont les intervalles entre deux dates qui doivent prendre en compte les années bissextiles, les années qui devraient l'être mais ne le sont pas (tous les 128 ans), les années qui n'ont jamais existé à cause des changements de calendriers... Ca, c'est une autre affaire.
Mais la comparaison, il suffit d'un petit algorithme pour savoir si une date est antérieure ou postérieure à une autre.
Evidemment, ça ne se fait pas avec des méthodes "modernes", du fait que, justement, les dates ne sont précises que depuis relativement peu de temps.

Commentaire de papounet69 le 01/11/2010 16:12:46

Oui strtotime('1950/10/31') donne bien un résultat !

Mais :
<?php
date_default_timezone_set('Europe/Paris');
echo strtotime('1950/10/31');
?>

Affiche : RIEN !!!
Nota : test réalisé avec PHP 5.2.8
Tout simplement parce que strtotime utilise le timestamp UNIX comme je le signalait dans mon precedent message.
Or je souhaite calculer quelque chose du style :

$diff = strtotime('1656/10/31')-strtotime('1656/10/1');
mais cela ne donne pas le resultat attendu.

Merci tout de même pour ta réponse : tu m'as au moins obligé à relire la doc PHP !

Commentaire de fredhot le 01/11/2010 16:20:58 8/10

salut à tous,
pour répondre au 1er post de <<Commentaire de neigedhiver le 28/10/2010 00:30:33>>.
Ben moi quand je fais phpinfo j'ai <<PHP Version 5.2.6-1+lenny9>>, donc le scrip de 2 lignes et autres fonctions natives de la version 5.3 je peux oublier... pour l'instant.
Donc scrip un peu long mais je ne pourrais pas faire mieux et c'est justement le script qui me manquait pour finaliser une partie d'un projet.
Bonne continuation.

Commentaire de neigedhiver le 01/11/2010 16:49:35

Ben oui, c'est parce que peu de scripts utilisent pleinement PHP5.3 que les hébergeurs n'ont aucune raison de se presser de mettre à jour leur version de PHP.
Bien que PHP5.2 soit encore maintenue (corrections de bugs, patches de sécurités, etc), cette banche n'est plus développée. PHP5.3 est stable depuis le 30 juin 2009...
La plupart des hébergeurs (heureusement pas tous) continuent de n'avoir rien à faire de l'avis des utilisateurs...
Une solution pourrait être de quitter son hébergeur PHP5.2 pour aller voir chez la concurrence en expliquant la raison du départ. Mettre à jour son serveur vers PHP5.3 n'est pas quelque chose de franchement compliqué pour un Administrateur Système qui fait son travail.

Cela dit, comme la plupart des utilisateurs continuent d'utiliser des fonctions et une syntaxe de PHP3 (voir l'utilisation abusive des fonction mysql_*), les torts sont relativement partagés.

Continuez donc d'utiliser des technologies qui sont rapidement dépassées, pour ma part, je préfère me tenir à jour de PHP, au moins, comme ça, on peut avancer.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Class POO retourné le nom de l'objet [ par MeTh ] Bonjour,Comment retourné le nom de l'objet déclaré?exemple :$monobjet = new GridR();comment recuperé $monobjet dans ma class?Merci conversion fichier .doc en .html [ par thoru ] Bonjour!Je débute en php et je ne sais pas s'il existe une possibilité de convertir un fichier .doc en fichier.html.Je vous explique je dois prendre d Include, class et array [ par Hades5k ] Bonjour! J'ai un petit problème à utiliser un array dans un fichier que j'inclus... voici un peu le code : &lt;?php $classNames = array(); include_onc Tags Word - Conversion [ par jdaviaud ] Bonjour a tous,J'essaye desespérément de faire une interface d'import de fichiers texte pour les convertir ensuite en fichier HTML, tout fonctionne im pb avec la poo5 [ par windu ] Voila mon problème:Je crée un objet qui manipule (entre autres) des tableaux.... jusque là tout va bien!La où je coince, c'est que cet objet est appel Quelle bibliothèque utilisée pour le mapping objet relationnel ? [ par marik7335 ] Je cherche une bibliothèque permettant l'utilisation du mapping objet relationnel. Si vous en connaissez ou si vous avez une piste pouvant m'éclairez conversion date [ par youyou26 ] je veux juste convertir une date dd/mm/yyyy en yyyy-mm-dd ou tt simplement yyyymmdd.la $Dte m'affiche dd/mm/yyyy dans le calendrier et ce que je veux Problem d'affichage de resultat de requete sous forme de tableau [ par jbcaiz ] explication : je fais un requete de recherche dans ma base, qui doit normalement me sortir plusieur résultat.je veux que ces résultat s'affiche dans u OBJECT EMBED + BLOB [ par RealKEV1 ] Bonjour,Je récupére grace à php un objet .wmv crypté type LongBlob ( stocké dans une table mysql). Et je voudrais faire une page html spéciale pour po objet [ par alahyaneali ] en d&#233;clarant une classe sur un fichier phpest il possible de creer cet objet &#224; partir d'un autre fichierou l'utiliser &#224; partir d'un aut


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales