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

Norme de planification de date.

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.

Chaîner des règles entre elles permet d’obtenir des règles complexes.

Sens

Le sens permet d’indiquer le déplacement dans l’intervalle courant.

Plage

La plage permet de définir un sous-période de l’intervalle courant.

Exemples

Exemples de règles avec Outlook.

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.

Calendrier grégorien
Calendrier musulman

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.