Ticket #453 (closed bug: fixed)

Opened 10 months ago

Last modified 7 months ago

méthode durationTo de jDateTime

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

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

02/08/08 10:11:33 changed by flh

  • status changed from new to assigned.
  • owner set to flh.
  • component changed from jelix to jelix:utils.

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.

02/08/08 10:25:12 changed by bballizlife

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

02/20/08 11:52:37 changed by laurentj

  • review changed.
  • milestone set to Jelix 1.1.

04/13/08 14:09:58 changed by laurentj

  • status changed from assigned to closed.
  • docneeded changed.
  • resolution set to fixed.

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

Download in other formats: Comma-delimited Text Tab-delimited Text RSS Feed