# Horodatage

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. 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 ou la Coupe des Pyrénées.
En 1934, les télégrammes sont horodatés. En 1937, les fiches des taxis parisiens sont également horodatées.
En 1943, l'horodatage existe dans les petites et moyennes entreprises.

## 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 :
Exemple d'un horodatage ACARS :
| Horodatage | ATA | Message ACARS | Chapitre ATA | Signification du message |
| 00:26Z | 3044 | ANTI ICE R WINDOW | Protection givre et pluie | Dégivrage de fenêtre droite |
| 00:26Z | 561200 | R SLIDING WINDOW SENSOR | Fenêtres | Capteur de la fenêtre droite coulissante |
| 00:26Z | 2600 | SMOKE LAVATORY SMOKE | Protection incendie | Fumée dans les toilettes |
| 00:27Z | 2600 | AVIONICS SMOKE | Protection incendie | Fumée dans l'avionique (ordinateurs de bord : système de pilotage) |
| 00:28Z | 561100 | R FIXED WINDOW SENSOR | Fenêtres | Capteur de la fenêtre droite fixe |
| 00:29Z | 2200 | AUTO FLT FCU 2 FAULT | Pilote automatique | Défaillance du pilotage automatique n$^o$ 2 |
| 00:29Z | 2700 | F/CTL SEC 3 FAULT | Commandes de vol | Défaillance du système de pilotage n$^o$ 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 :

### PHP

En PHP, son utilisation se présente sous la forme suivante :
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'anglais string to time, soit en français "conversion d'une chaîne de caractères en une date") et à utiliser comme cela :
Ou encore date qui affiche une date dans un certain format à partir d'un timestamp :
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.

### 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. 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 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".