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)
Change History (6)
Changed 13 years ago by flh
comment:1 Changed 13 years ago by laurentj
- Milestone set to Jelix 1.0 RC1
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 ;-)
Première suggestion de patch