Nouveau sujet Répondre Imprimer Syndication RSS 2.0

Suggestion - Gestion de Dates

Utilisation de DateTime ?
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1552
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 15 Aout 2008, 13:58
Plop,

J'ai deux suggestions.

Ma première est de suggérer l'utilisation de l'objet PHP 5.2 "DateTime" (voir les fonctions de gestion de dates sur la doc PHP) à la place de la gestion des dates conventionnelles avec PHP (elles permettent, par exemple, de dépasser les intervalles UNIX)...

Et, aussi, de supprimer le champ "is_dst", pour l'imposer comme il se faut (car les pays utilisant ce changement d'horaire suivent une règle particulière - eh non, c'est pas du pif - : Le passage à l'heure d'été a lieu tous les derniers dimanches du mois de mars, à 1h du matin, heure UTC / GMT - appelez ca comme vous voulez -, et le passage à l'heure d'hiver le dernier dimanche d'octobre, à 1h du matin, toujours à l'heure UTC. Donc un simple calcul PHP (simple à faire, je le poste en bas si nécessaire), et on en parle plus :p

Voici une class étendant DateTime, qui fait, je pense, ce qui peut être utile :

<?php
class Date extends DateTime {
    /**
     * Modifie la date
     *
     * @param integer $hour
     * @param integer $minute
     * @param integer $second
     * @param integer $month
     * @param integer $day
     * @param integer $year
     * @return void
     */
    public function set($hour = null, $minute = null, $second = null, $month = null, $day = null, $year = null){
        $hour = $hour === null ? parent::format('G') : $hour;
        $minute = $minute === null ? parent::format('i') : $minute;
        $second = $second === null ? parent::format('s') : $second;
        $month = $month === null ? parent::format('n') : $month;
        $day = $day === null ? parent::format('j') : $day;
        $year = $year === null ? parent::format('Y') : $year;
        
        $this->setDate($year, $month, $day);
        $this->setTime($hour, $minute, $second);
    }
    
    /**
     * Affiche le timestamp UNIX
     * 
     * @return integer
     */
    public function unix(){
        return $this->format('U');
    }
    
    /**
     * Retourne si on est en horaire d'été (DST) ou non
     * (Suit la politique des horaires GMT : http://docs.php.net/manual/fr/function.gmmktime.php#47605)
     * 
     * @return boolean
     */
    public function is_dst(){
        $compare = new DateTime('01:00:00', new DateTimeZone('UTC'));
        $is_dst = false;
        
        // -- A-t-on dépassé l'heure d'été ?
        $compare->setDate($this->format('Y'), 4, 1);
        $compare->modify('Last Sunday');
        
        $is_dst = $this >= $compare;
        
        // -- Est-on toujours à l'heure d'été ?
        $compare->setDate($this->format('Y'), 11, 1);
        $compare->modify('Last Sunday');
        
        $is_dst = $is_dst && $this < $compare;
        
        return $is_dst;
    }
}


Voili voilou...


 
Volcan
Avatar de Eagle
  • Age : 31 ans
  • Messages : 1093
  • Inscrit : 22 Janvier 2005
  Lien vers ce message 15 Aout 2008, 14:10
D'expérience je dirais que, même si ça semble une super idée, il faut être très prudent.

En effet, en fonction de la base de données le type va varier, le fonctionnement aussi. Donc si FSB veut garder une certainement indépendance ça va vite être compliqué ^^;


Dans les hauteurs des cieux, par delà les nuages et les sommets enneigés, l'aigle majestueux survole la terre...

Kosmos & Eagle homepage ^^
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1552
  • Inscrit : 28 Septembre 2006
Message édité 2 fois, dernière édition par Talus, 15 Aout 2008, 14:16     Lien vers ce message 15 Aout 2008, 14:15
En fonction de la BDD ? Que veux tu dire par là, puisqu'après, l'implication de la BDD n'aura aucun rapport dans la gestion des dates (à part le décalage UTC, p-ê) ? :p. Ah, aussi, pour avoir la date GMT, suffit de faire :
new DateTime('NOW', new DateTimeZone('UTC'));


(par défaut, ou bien, si l'utilisateurs change, de gérer après ave les méthodes setTimezone). Du coup, plus besoin du foireux "date_set_timezone(date_get_timezone())" :p


 
Equipe des MODS
Avatar de Fabogranqi
  • Age : 19 ans
  • Messages : 3095
  • Inscrit : 29 Décembre 2004
  Lien vers ce message 15 Aout 2008, 16:14
FSB2 est censé fonctionner sur un serveur ayant PHP >= 5.0. Donc je crois pas que ça va être possible ;)
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1552
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 15 Aout 2008, 16:54
Faudrait pousser sur 5.2 :fsb2_kiss:

Facon, me semble que seuls les hebergeurs n'étant pas passé sur PHP5.X ne sont pas sur 5.2, ou alors ils sont en retard :-°


 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14520
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 18 Aout 2008, 17:01
Salut,
bonne idée ... seulement il y a un point totalement bloquant dans ton idée :
PHP 5.2 "DateTime"


Dans le futur plutôt ^^


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5469
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 18 Aout 2008, 18:13
rein n'empêche de réimplémenté la fonction si cela existe pas ...


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1552
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 18 Aout 2008, 18:28
Recoder la classe ateTime et DateTimeZone ? Pas mal de boulot ca... Si en plus faut l'implémenter dans FSB2...


 
Equipe des MODS
Avatar de Grummfy
  • Age : 23 ans
  • Messages : 5469
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 18 Aout 2008, 19:03
juste coder ce dont on a besoin


"La gravité est le bonheur des imbéciles" Charles de Montesquieu > "T'as raison, L'apesanteur c'est plus rigolo" Hébus de Phalompe (Troll de Troy)
http://www.grummfy.com/download/crea/smileys/fsb2.gif Mods fsb1 - Mods fsb2 - Mon forum - Grummfy's project
 
Répondre


.