- 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

