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 13 years ago

Closed 13 years ago

#379 closed enhancement (fixed)

Améliorations sur jDateTime

Reported by: flh Owned by: flh
Priority: normal Milestone: Jelix 1.0 RC1
Component: jelix:utils Version: trunk
Severity: normal Keywords:
Cc: Blocked By:
Blocking: Documentation needed:
Hosting Provider: Php version:

Description

Voici un patch pour la classe jDateTime, qui apporte les améliorations suivantes :

  • vérification de toutes les dates passées à la classe (dans le constructeur, et dans setFromString), afin de garantir notamment que l'on n'essaie pas par exemple de se téléporter au 29 février 1900 (je pense que c'est crucial, puisque jDateTime est utilisé par les classes de validations de données) ;
  • prise en charge du format RFC2822 : j'ai ajouté une constante RFC2822_FORMAT, pour distinguer de la RFC822, dont le format de date est devenu obsolète (notamment à cause de l'année sur deux chiffres, ou des fuseaux horaires américains/militaires donnés en toutes lettres). Je suggère au passage de rendre la constante RFC822 obsolète, tout comme l'est sa RFC mère ;
  • une première modification cosmétique dans la fonction strptime de remplacement, en utilisant des captures nommées dans le motif donné à preg_match : cela nous économise un appel à preg_match pour savoir quel paramètre correspond à quelle capture ;
  • une second modification, dans setFromString, pour utiliser strptime à chaque fois que l'on peut (l'idée serait d'arriver à factoriser tous les cas qui peuvent se résoudre avec strptime).

J'ouvre ce ticket pour pouvoir discuter du patch et l'améliorer (release early, release often, même pour un patch). Je suis en train d'écrire une classe de tests unitaires.

Une question particulière : est-ce pertinent de rajouter une exception pour les dates invalides (lancée dans le constructeur) ?

Attachments (3)

jDateTime.class.php.patch (10.1 KB) - added by flh 13 years ago.
Première suggestion de patch
jDatetime.2.patch (13.3 KB) - added by flh 13 years ago.
Deuxième patch, avec les bugs en moins, et l'ajout de locales
jdatetime.html_cli.php (5.1 KB) - added by flh 13 years ago.
Tests unitaires pour jDateTime

Download all attachments as: .zip

Change History (6)

Changed 13 years ago by flh

Première suggestion de patch

comment:1 Changed 13 years ago by laurentj

  • Milestone set to Jelix 1.0 RC1

Changed 13 years ago by flh

Deuxième patch, avec les bugs en moins, et l'ajout de locales

Changed 13 years ago by flh

Tests unitaires pour jDateTime

comment:2 Changed 13 years ago by flh

Voici la classe de tests pour jDateTime (qui motive donc un second patch, pour corriger les bugs, heureusement qu'on fait des tests).

Un test échoue avec la nouvelle classe, mais c'est parce que c'est un pervers à base de seconde intercalaire : je ne sais pas si les applications utilisant Jelix ont besoin d'une telle précision.

comment:3 Changed 13 years ago by laurentj

  • Resolution set to fixed
  • Status changed from new to closed

Review+. Rien à dire, si ce n'est qu'il ne faut pas oublier le cartouche du fichier (avec copyright etc), et éviter d'utiliser les commentaires en # pour éviter de confondre avec les instructions pour le préprocesseur. Pour le test qui valide pas, je l'ai mis en commentaire.

Patch et tests intégrés dans le trunk.

Merci pour cette contribution Florian. Ravis que tu contribue à Jelix ;-)

Note: See TracTickets for help on using tickets.