L'horodatage (en anglais timestamping) est un mécanisme qui consiste à associer une date et une heure à un événement, une information ou une donnée informatique. Il a pour but d'enregistrer l'instant associé à la détection du début et/ou de la fin de l'exécution d'une opération machine.
La valeur représentant la date et l'heure est appelée timestamp (de l'anglais time, « heure » et stamp, marquage par un timbre ou un tampon) ou tout simplement « horodatage ». Il peut s'agir d'une séquence de caractères (groupe date-heure) représentant la date et l'heure sous une forme intelligible. En informatique, ce type de format est souvent utilisé dans les journaux d'événements[1]. Un timestamp peut aussi désigner un compteur numérique représentant une quantité de temps écoulée depuis un instant de référence, comme dans le système de l'heure Unix. Le timestamp se distingue alors de la date et de l'heure entendues comme un ensemble de valeurs année/mois/jour et heure/minute/seconde, la conversion pouvant se faire de l'un à l'autre.
Histoire
En 1905, des horo-dateurs ou horodateurs sont utilisés dans certaines compétitions sportives, pour imprimer automatiquement sur le carnet de bord de l'automobile l'heure exacte du passage, comme par exemple lors de la quinzaine d'Aix les Bains[2] ou la Coupe des Pyrénées[3].
En 1934, les télégrammes sont horodatés[4]. En 1937, les fiches des taxis parisiens sont également horodatées[5].
En 1943, l'horodatage existe dans les petites et moyennes entreprises[6].
Informatique
En informatique, l'horodatage est fréquemment employé dans les journaux d'événements (ou historiques). Il se traduit habituellement sous la forme d'une séquence de caractères représentant la date et l'heure à laquelle est survenu un événement, associée à un texte décrivant ledit événement. La date et l'heure sont généralement représentées de façon à faciliter la comparaison entre événements, ce qui permet de suivre le déroulement d'un ensemble d'opération de manière relativement aisée. La norme internationale ISO 8601 spécifie une représentation de la date et de l'heure universelle.
Dans un système de fichiers, un timestamp peut désigner un attribut indiquant la date de création ou de modification d'un fichier ou d'un dossier. De même, dans une base de données, un timestamp peut correspondre à la date de création ou de modification d'un enregistrement.
Ce compteur est universel et international : il ne compte pas les changements d'heures ni de fuseaux horaires, ce qui est pratique en informatique pour comparer des dates ou pour certains calculs. Toutefois, cela oblige à faire des conversions complexes avant d'afficher une date (ou pour en lire une). Heureusement la plupart des langages ont des fonctions qui se chargent des conversions de ce type, en tenant compte des fuseaux horaires. Cette méthode pour décompter le temps n'est cependant pas systématique : les systèmes UNIX décomptent à partir du 1er janvier 1970 à 0 h, alors que le système openVMS, utilise par exemple le Jour julien modifié.
Exemples de séquences d'horodatage :
2008-04-22T06:00:00Z
1997-11-09 T 11:20 UTC
Sat Jul 23 02:16:57 2005
Défaillance du système de pilotage no 3 (ailerons)
Réalisation
Monde Unix
Dans le monde Unix, majoritairement utilisé sur les serveurs connectés à internet, l'horodatage est principalement réalisé sur la base de l'Unix Timestamp. Il est possible de l'obtenir dans un Terminal à l'aide de la commande :
date+%s
PHP
En PHP, son utilisation se présente sous la forme suivante :
$timestamp_actuel=time();$timestamp=mktime(14,30,50,03,21,1992);//Retourne le timestamp du 21 mars 1992 à 14 h 30 min 50 s//ce qui donne le nombre : 701184650
Pour la commande mktime, l'implémentation POSIX spécifie que le paramètre est une structure.
Il existe d'autres fonctions permettant de manipuler des timestamps, parmi lesquelles on peut citer strtotime() (de l'anglaisstring to time, soit en français "conversion d'une chaîne de caractères en une date") et à utiliser comme cela :
// La variable $today sera égale au timestamp d'aujourd'hui 0h00$today=strtotime('today');// La variable $tomorrow sera égale au timestamp de demain 19h00$tomorrow=strtotime('tomorrow 19:00');// La variable $special sera égale au timestamp du {{date-|1 janvier 1970}} plus deux jours et trois heures$special=strtotime('01/01/1970 +2 days +3 hours');
Ou encore date() qui affiche une date dans un certain format à partir d'un timestamp :
$s=strtotime('10/30/1987');// $s est égal à 562546800$d=date('d-m-Y',$s);// $d est égal à 30-10-1987
Il est également possible d'obtenir le timestamp actuel en microsecondes, cette méthode est généralement utilisée pour calculer le temps d'exécution d'un script ou d'une requête SQL ou pour générer un ID unique.
$TpsMicrosecondes=microtime();
En Excel
Pour convertir un timestamp en date avec le tableur Excel, on peut utiliser la formule suivante:
=ENT(((A1/60)/60)/24)+DATE(1970;1;1)
Cryptographie
En cryptographie, l'horodatage est un ensemble de techniques consistant à associer de manière sûre une date et une heure de référence à des données, dans le but de prouver l'existence de ces données avant une certaine date[8]. Ce mécanisme est souvent utilisé conjointement avec la signature électronique. L'obtention d'une date et heure de référence nécessite généralement l'utilisation des services d'un tiers horodateur de confiance, ou autorité d'horodatage. La RFC 3161[9] définit un protocole d'horodatage applicable par une autorité d'horodatage.
L'horodatage électronique permet ainsi de protéger ses droits d'auteur en créant une preuve d'antériorité. Plusieurs outils sont disponibles afin d'assurer la création de ce genre de preuve, notamment grâce à la blockchain.
L'horodatage électronique est parfois également appelé "contremarque de temps"[10].