developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 12 years ago

Closed 12 years ago

#453 closed bug (fixed)

méthode durationTo de jDateTime

Reported by: benjamin Owned by: flh
Priority: high Milestone: Jelix 1.1 beta 1
Component: jelix:utils Version: 1.0.1
Severity: major Keywords: jDateTime durationTo
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

En utilisant la méthode durationTo de jDateTime il m'arrive d'avoir un problème plutôt très ennuyeux...

Voilà mon code et l'erreur :

 // Get now date/time
 $dtNow = new jDateTime();
 $dtNow->now();
            
 // Get expiration date
 $expirationDate = $dao->expiration_date;
            
 // Create date time object from DB date
 $dtExpirationDate = new jDateTime();
 $dtExpirationDate->setFromString($expirationDate, jDateTime::BD_DTFORMAT);
            
 // Compute difference between these dates
 try
 {
    $countdown = $dtNow->durationTo($dtExpirationDate);
 }
 catch (Exception $e)
 {
    jLog::log($e->getMessage());
    $advert = jDao::createRecord('autolux~advert');
 }

Erreur :

now : 2008-02-08 00:27:22
expirationDate : 2008-02-12 00:00:00
exception: jDateTime: date/heure invalide (0-0-4 -1:32:38)

A priori si je comprends bien, le problème est ce "-1h" qui vient du "$t[\'hours\']-1"...

Plateforme : Windows Vista Serveur : Wamp5 - WampServer? Version 2.0

Change History (4)

comment:1 Changed 12 years ago by flh

  • Component changed from jelix to jelix:utils
  • Owner set to flh
  • Status changed from new to assigned

Ok, durationTo telle qu'elle est écrite actuellement n'est qu'une vague approximation de ce que l'on veut faire. :-)

Je pense qu'il vaudrait mieux créer une classe jDuration, car jDateTime ne semble pas adaptée pour représenter des durées :

  • le nombre de jours est borné par le nombre de jours dans le mois : c'est très embêtant pour une durée de 50 jours par exemple (on ne peut pas contourner cela en disant par exemple 1 mois et 29 jours, car évidemment la durée "1 mois" n'est pas identique selon le moment où on l'ajoute),
  • on ne peut, de plus, pas représenter une durée de 4 jours par exemple, car l'année, le mois et le jour ne peuvent être que simultanément nuls ou valides (il est interdit d'avoir une année et un mois nuls, mais pas le jour).

Je vais écrire un petit patch ajoutant jDuration.

comment:2 Changed 12 years ago by bballizlife

jDuration est prévue ticket #425. Si tu propose un patch, fais-le de préférence sur ce ticket. Merci !

comment:3 Changed 12 years ago by laurentj

  • Milestone set to Jelix 1.1

comment:4 Changed 12 years ago by laurentj

  • Documentation needed unset
  • Resolution set to fixed
  • Status changed from assigned to closed

Bug corrigé dans le trunk par le patch de Florian pour le ticket #425

Note: See TracTickets for help on using tickets.