Dates, durées et horloges en informatique

Un temps pour tout, tout pour le temps !

Le concept de « temps » a ceci de paradoxal qu’il est à la fois très intuitif (tout le monde sait ce qu’est le temps) et extrêmement complexe dans ses implications et ses représentations1.

C’est particulièrement vrai en informatique, où l’on a beaucoup d’outils pour manier les informations temporelles dans toute leur subtilité. Mais ces moyens sont souvent mal utilisés, soit parce que mal compris, soit parce que les notions qu’ils font intervenir sont mal comprises, parfois par les concepteurs des langages ou des bibliothèques. Or, une méconnaissance, un emploi du mauvais outil peuvent mener à des erreurs complexes, rares, délicates à trouver et à corriger, et aux conséquences démesurées – imaginez un système de paie qui ne se lance pas, par exemple.

Le but de ce tutoriel est de faire le point sur la gestion de la temporalité en informatique : réviser et clarifier les concepts de date, durée et horloge, et voir comment manipuler ces concepts en informatique.

Prérequis

Ce contenu n’a aucun prérequis particulier. Même si vous ne programmez pas, il pourrait vous servir pour votre culture générale.

Les exemples seront en Java « récent » (8 ou plus), mais les concepts sont applicables à tous les langages. Les différents outils utilisables pour chaque langage seront regroupés en annexe. N’hésitez pas à indiquer ceux qui concernent votre langage préféré en commentaire, que je puisse le rajouter à la liste !

Les trois parties principales devraient se lire dans l’ordre proposé, car chacune part du principe que la précédente est acquise.


  1. Par exemple, il n’existe pas de définition du « temps » qui ne soit pas autoréférentielle, c’est-à-dire où la notion de temps est absente.

Les dates et heures

  1. Les 3 (trois ?!) types de dates
  2. Digression sur les calendriers
  3. Précision d’une date et dates partielles
  4. Usage des dates et heures en informatique

Les durées

  1. Une durée n’est pas une date (ça parait évident, mais ça va mieux en le disant)
  2. Le grand bazar des unités de durée
  3. Usage des durées en informatique

Les horloges

  1. « Les  » horloges ?
  2. L’horloge légale
  3. L’horloge monotone
  4. Le cas particulier des planifications
  5. La gestion des horloges en informatique

Annexes

  1. Afficher et faire saisir des dates : considérations sur l’expérience utilisateur
  2. Ressources par langages de progammation


Une fois ce tutoriel terminé, vous devriez maitriser les notions suivantes :

  • Les trois types de « date » (instant, date indépendante de l’utilisateur et date dépendante de l’utilisateur), les concepts de calendrier et de précision des dates, et les subtilités de leur gestion en informatique : ce qu’est un timestamp, les outils de manipulation des dates (dont la différence avec une chaine de caractères et le formatage), l’existence de la norme ISO 8601.
  • Ce qu’est une durée (et sa différence avec une date), les systèmes d’unités employés pour les mesurer et les écueils associés (en particulier les unités dont la taille est variable selon le contexte), et les difficultés de leur usage en informatique – notamment les pièges qui consistent à mélanger durées et dates, et à faire manuellement de l’arithmétique trop simpliste. Et encore une fois la norme ISO 8601.
  • La distinction entre une horloge légale et une horloge monotone (qui est en fait un chronomètre), dans quel cas utiliser chacune d’elle et comment les exploiter en informatique – surtout dans le cas d’une planification.

Merci à @Renault, @QuentinC, @Aabu, @entwanne et @ToxicScorpius pour leurs retours en bêta-lecture, et à @entwanne pour la validation !


Icône d’après CC BY-SA 4.0 Micthev

Ces contenus pourraient vous intéresser

5 commentaires

Bonjour,

Je découvre ce tuto ! Bien ! Bravo !

Dans le chapitre "La date indépendante de l’utilisateur", sur la 2ᵉ page, une Typo: "Dès que l’on doit présenter une information temporelle à un utilisateur humain, on doit employer une date. Le plus simple – pour le développeur – est de manier une de date indépendante du référentiel de l’utilisateur, …."

Suivant moi, (mais je me trompe peut-être !) il manque un titre de chapitre du style "Conclusion du chapitre", entre API dédiées, conversions automatiques et SQL et la fin du chapitre.

(J’ai la même remarque sur les deux chapitres suivants… donc ce doit être fait exprès !)

Bravo ! Et merci !

Cordialement.

+0 -0

Bonjour @Dedeun, merci pour tes retours !


En fait il y a bien des conclusions aux différents chapitres, sous le dernier trait horizontal (comme ce paragraphe). C’est vrai que c’est assez peu clair. C’est un problème connu, qui sera sans doute corrigé dans une version future.

Bonjour,

Je découvre ce tuto ! Bien ! Bravo !

Dans le chapitre "La date indépendante de l’utilisateur", sur la 2ᵉ page, une Typo: "Dès que l’on doit présenter une information temporelle à un utilisateur humain, on doit employer une date. Le plus simple – pour le développeur – est de manier une de date indépendante du référentiel de l’utilisateur, …."

Suivant moi, (mais je me trompe peut-être !) il manque un titre de chapitre du style "Conclusion du chapitre", entre API dédiées, conversions automatiques et SQL geometry dash lite et la fin du chapitre.

(J’ai la même remarque sur les deux chapitres suivants… donc ce doit être fait exprès !)

Bravo ! Et merci !

Cordialement.

Dedeun

J’ai également lu ces parties en 2 chapitres. C’était vraiment clair et utile pour moi.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte