Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Resolu] Bug Jelix ?

Posted by scrasch on 05/02/2011 15:14

Bonjour,

Il me semble avoir trouvé un bug Jelix. Mon code :

$dt2 = new jDateTime(); 
$dt2->setFromString('1993-01-01', jDateTime::DB_DFORMAT);
$duration = new jDuration(array('year'=>70));
$dt2->add($duration);
print_r($dt2);

Le résultat :

jDateTime Object ( day => 1 month => 1 year => 1970 hour => 1 minute => 0 second => 0 defaultFormat => 11 )

Pour une date inférieure à 1968, ça marche. Pour une date postérieure on obtient le même résultat que pour l'exemple ci-dessus. Bug Jelix ?

Cordialement,

Thomas

  [Opened] Bug Jelix ?

Reply #1 Posted by scrasch on 05/02/2011 15:17

Apparemment, la fonction durationTo n'accepte que des dates supérieures à 1970, mais est-ce le cas de sub, add et substract? Dans mon cas, j'ai remplacé add par sub et maintenant, ça marche... alors, est-ce que substract marche avec des date inférieures à 1970. Autrement, comment peut on faire pour calculer l'age (quand les internautes ont plus de 41 ans)?

  [Opened] Bug Jelix ?

Reply #2 Posted by scrasch on 05/02/2011 15:18

Et compareTo aussi par ce que je l'ai utilisé :)

  [Opened] Bug Jelix ?

Reply #3 Posted by scrasch on 05/02/2011 15:20

Voir message ci-dessus (Je ne connaissais pas la fonction éditer)

  [Opened] Bug Jelix ?

Reply #4 Posted by laurentj on 05/03/2011 09:42

Bonjour,

jDatetime/jDuration utilisant notamment mktime, les dates doivent être supérieur au 1/1/1970 (unix timestamp).

Utilise plutôt l'objet DateTime de PHP pour faire tes manipulations de date. jDateTime avait été développé pour palier à l'absence de Datetime avant PHP 5.2.

  [Opened] Bug Jelix ?

Reply #5 Posted by scrasch on 05/03/2011 15:23

Aie! J'ai la version 1.2.1 et il n'y a pas date_diff...

  [Opened] [Resolu] Bug Jelix ?

Reply #6 Posted by scrasch on 05/05/2011 10:43

Voici comment j'ai procédé finalement :

<code>
     /**
     * Renvoie l'age d'un utlisateur
     * @param Date $birth_date Date de naissance au format Y-m-d
     * @return integer Age de l'utilisateur
     */
    public function getAge($birth_date) {
        list($year, $month, $day) = split('[-.]', $birth_date);
        $today['month'] = date('n');
        $today['day'] = date('j');
        $today['year'] = date('Y');
        $age = $today['year'] - $year;

        if ($today['month'] <= $month) {
            if ($month == $today['month']) {
                if ($day > $today['day'])
                    $age--;
            }
            else
                $age--;
        }
        return $age;
    }
</code>
 
Page
  1. [Resolu] Bug Jelix ?