Le cauchemar de la manipulation des dates

par PresleyJesus

par PresleyJesus

Depuis la nuit des temps, la gestion des dates est un véritable cauchemar en programmation. La manipulation des valeurs de date est souvent la cause des anomalies et des problèmes sur des systèmes en production.

Le risque est là quand on la manipule en chaîne de caractère (en string). Elle peut avoir n’importe quel format à ce moment-là. Aussi, les paramètres régionaux ou de localisation de l’environnement d’exécution peuvent la faire varier.

Pièges à dates

Voici une série d’endroits où l’on peut se faire prendre au piège avec une valeur de date erronée.

  1. Lecture d’un fichier plat (texte) ou d’un XML avec des dates écrites textuellement
  2. Saisie de date dans un champ texte
  3. Passages de données entre des couches applicatives (ex: un script Javascript envoie une date (format texte) dans un appel AJAX vers le serveur).

Trucs pour réduire les maux de tête

Vous pouvez réduire les ennuis en utilisant au maximum les classes de gestion de date natives au langage de programmation que vous utilisez. Ces fonctionnalités sont disponibles dans tous les langages modernes.

  1. Utilisez des composantes visuelles pour la saisie d’une date (ex. : DatePicker) qui retourne la date dans un format natif valide et insensible au format régional. En PHP, vous pouvez utiliser des Frameworks qui peuvent générer des champs de formulaire typés avec des champs date. En prime vous offrez un beau calendrier pour votre utilisateur.
  2. Valider à outrance la date texte avant de la convertir. Incluez dans votre message d’erreur le texte que vous avez tenté de lire (ça l’aide pour le soutien aux utilisateurs). Tout peut arriver!
  3. Dès que vous lisez une date texte, placez-la tout de suite dans une variable typée pour les dates.
  4. Quand vous devez écrire une date en format texte (sortie à l’écran, écriture dans un fichier), évitez d’utiliser les formats prédéfinis par les paramètres régionaux (ex.: short date).

Est-ce que les dates vous ont déjà hanté dans vos projets?