Coder le temps.
La plupart des dates doivent être calculées en fonction de règles. Suivant le produit utilisé, le calcul de la date peut être réalisé dynamiquement au moment du calcul de la planification à partir d’un calendrier prédéfini. Lorsque cela n’est pas possible, les calculs doivent être réalisés par avance afin de stocker les dates pour une utilisation ultérieure.
Ce document propose une norme de règle qui servira au calcul et au nom des calendriers afin de pouvoir régénérer ces derniers à partir de leur nom.
Dossier
TimeCode
Timecode est une norme de codage de calcul de date, il offre une méthode simple mais efficace pour décrire des règles de planification.
Coder une date nécessite d’en comprendre le sens et le fonctionnement.
- Principe
A quoi correspond une date et comment la calculer ?
- Application
La norme s’applique sur la génération de calendrier, le calcul de date à la volée demande des conditions particulières.
- Nommage
Le codage de la date est obtenu par le respect d’une liste de règles simples.
- Formule
La formule générale est donnée à titre indicatif.
On appellera Unités temporelles les diverses subdivisions du temps.
- Calendaire
Les principaux types calendaires sont le jour, la semaine, le mois, la saison, l’année, le siècle et l’ère.
- Heures
Un jours peut être divisé en heure, minute, seconde et éventuellement en microseconde.
- Ouvrés/Fériés
La notion de jours ouvrés induit l’utilisation d’une base contenant la liste de jours à supprimer.
Une unité temporelle est une division qui prend son sens dans un intervalle temporel périodique.
- Dates
Les intervalles de dates permettent de situer une période dont l’unité minimale est le jour dans une période pouvant aller jusqu’à l’infini.
- Heures
L’utilisation des heures est nécessaire lorsqu’on traite des périodes inférieures au jour.
- Jours ouvrés
L’utilisation de jour ouvrés permet de définir des jours particuliers dans l’intervalle considéré.
Le positionnement spécifie les éléments à prendre en compte dans un intervalle.
- Index
L’index permet d’identifier l’élément à traiter dans la l’intervalle courant, si l’information est omise on considère l’ensemble des éléments.
- Listes
Les liste identifient une série d’éléments consécutifs ou non dans l’intervalle.
- Période
Si l’index correspond à l’élément dans la période il est tout aussi possible d’identifier la période elle-même dans la période supérieure.
- Unité fixe
Fixer une unité permet de simplifier l’écriture en supprimant l’indication d’intervalle.
- Jours mixtes
Certains intervalles peuvent être bornés en fonction de jours ouvrés et calendaires, par exemple pour démarrer un nième jour ouvré et finir un nième jour calendaire du mois.
Regrouper des intervalles permet de définir des périodes plus larges.
- tous les n jours
Considérer une date revenant tous les n jours revient à diviser une période en n jours.
- "Mestres"
Diviser l’année en groupe égaux de mois permet de travailler avec des périodes comprises entre le mois et l’année.
- Intervalles
Lorsque la période contient un nombre fixe d’élément, on peut la définir comme un regroupement de périodes inférieures.
- Résolution graphique
Les regroupements peuvent être identifiés en récapitulant les éléments dans un tableau.
Le décalage de dates permet d’ajouter un certain nombre d’unités à une liste de dates.
- Périodes fixes
Ajouter des jours permet d’obtenir une nouvelle date dont l’écart avec la référence correspondant au nombre de jours.
- Périodes variables
Décaler une période variables correspond à l’ajout des périodes sans dépassement de la dernière période.
- Jours ouvrés
La différence avec le calcul de jour calendaire est la prise en compte de jours fériés dans la base de calcul.
Calculer des jours ouvrés oblige a considérer les jours fériés ou chomés qui seront la base du calendrier.
- Base de calcul
La base de calcul corrrespond à la liste de jours fériés du calendrier considéré.
- Liste de jours
La base de calcul est une liste de jours à part entière, on peut donc s’en servir pour des calculs tels que les décalages.
- Week-end
Les week-ends sont des jours fériés périodiques, il sont définis par le numéro du jour de la semaine.
Une date spéciale est une date fixe ou une date issue d’un calcul complexe.
- Dates et heures fixes
Les dates fixes ne répondent à aucune règle, elles peuvent donc être écrites directement.
- Appel de fonctions
L’appel de fonction permet de calculer les dates complexes ou dont le période est déphasée par rapport au calendrier.
Les opérations consiste à appliquer sur une liste des opérations booléennes.
- Négation (!)
La négation permet d’inverser un liste de jours ou le résultat d’un calcul.
- Fonctions logiques
On applique un opérateur booléen sur chaque élément de deux listes de dates.
Mise en oeuvre de la norme.
- Contexte
La norme décrit une date correspand à un élément d’uné période, la date réelle dépend du contexte dans lequel on se trouve.
- Optimisation
Quelques astuces pour réduire la taille du code.
- Dates "à la volée" et Calendrier
Illustration des différences de calcul entre la génération des dates d’un calendrier et un date calculée à la volée.
Comprendre les différents calendriers permet de mieux comprendre les différents possibilités de calcul.
Coder les jours fériés du monde pour générer de nouvelles listes de dates.
- France
Une partie des jours fériés français s’appuient sur le calcul de la date de Paques.
- Etats-Unis
La date anniversaires se calent sur les jours de la semaine.
