- 1
[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 ?
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 ?
Posted by scrasch on 05/02/2011 15:18
Et compareTo aussi par ce que je l'ai utilisé :)
[Opened] Bug Jelix ?
Posted by scrasch on 05/02/2011 15:20
Voir message ci-dessus (Je ne connaissais pas la fonction éditer)
[Opened] Bug Jelix ?
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 ?
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 ?
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>
- 1