- Timestamp
-
Ein Zeitstempel (engl.: timestamp) ist ein Wert in einem definierten Format, der einem Ereignis (beispielsweise dem Senden oder Empfangen einer Nachricht, der Modifikation von Daten u. a.) einen Zeitpunkt zuordnet. Der Zweck eines Zeitstempels ist es, für Menschen oder Computer deutlich zu machen, wann welche Ereignisse eintraten. Wenn es auf einen genauen Zeitpunkt nicht ankommt, kann auch lediglich die Reihenfolge der Ereignisse gespeichert werden. Die am weitesten verbreitete Art von Zeitstempeln ist wohl die Unixzeit, welche die Anzahl der Sekunden seit dem 1. Januar 1970 00:00 Uhr UTC angibt. Bei Systemen, die diese Zahl unzureichend als vorzeichenbehaftete 32-Bit-Zahl kodieren, wird am 19. Januar 2038 ein Jahr-2038-Problem befürchtet. Bei den Intel-Mikroprozessoren wurde ab dem Pentium der sog. Zeitstempel-Zähler (engl. Time Stamp Counter) integriert. Dieser kann mit dem Assembler-Befehl RDTSC ausgelesen werden.
Der Begriff Zeitstempel wird vor allem in der EDV verwendet, wo der Zeitpunkt der letzten Bearbeitung (oder des letzten Zugriffes, etc.) von Dokumenten, Datensätzen und ähnlichem mittels eines Zeitstempels vermerkt wird. Manche Datenbanksysteme verwenden zu diesem Zweck Zeitstempel bis zu einem Millionstel einer Sekunde genau. Auch die vielerorts noch üblichen Posteingangsstempel sind Zeitstempel, obgleich sich deren Genauigkeit normalerweise nur auf den Tag (selten – vor allem im Bankbereich – auch noch im Stundenbereich) bezieht. Auch eingeblendete Zeitanzeigen bei Fotos und Videoaufnahmen werden als Zeitstempel bezeichnet.
Wichtig für die universelle Gültigkeit eines Zeitstempels mit Datum und Uhrzeit ist die Ergänzung um die Angabe der Zeitzone, auf die sich die Zeitangabe bezieht oder alternativ den Offset zu UTC. Nur so kann ein vollständiger Vergleich von Zeitstempeln realisiert werden und das Berechnen von Zeitdifferenzen ist möglich. Insbesondere in EDV-Systemen, die Daten aus mehreren Kontinenten verarbeiten, ist dies eine wichtige Anforderung.
Je nach Kontext beziehen sich Zeitstempel auf unterschiedliche Zeitsysteme bzw. Arten von Uhren: Ist ein Bezug zur "Wirklichkeit" wichtig, so benutzt man den Wert einer Echtzeituhr. Ist hingegen nur die Reihenfolge (bzw. die Kausalordnung - siehe auch Happened-Before) der Ereignisse wichtig, benutzt man eine logische Uhr. Im einfachsten Falle ist dies ein Zähler bzw. eine Sequenznummer. Sind aber mehr als zwei Parteien an der Kommunikation beteiligt (das heißt es gibt mehr als zwei Orte, an denen Ereignisse auftreten können), so ist es notwendig, eine komplexere logische Uhr zu verwenden, wie zum Beispiel eine Lamport-Uhr oder Vektoruhren: Sie erlauben es, die Kausalordnung der Ereignisse zu bestimmen, ohne dass die (Echtzeit-)Uhren an den verschiedenen Orten exakt synchronisiert sein müssen. Solche logischen Uhren werden vor allem von Netzwerkprotokollen und Transaktionssystemen benutzt.
Als Zeitstempel bezeichnet man auch Bescheinigungen, dass ein elektronisches Dokument zu der angegebenen Zeit dem Aussteller des Zeitstempels vorgelegen hat. Sie sind für den Einsatz elektronischer Signaturen im Rechtsverkehr unverzichtbar. Das deutsche Signaturgesetz regelt die Anforderungen für die Ausstellung von qualifizierten Zeitstempeln als besonders hochwertige Form einer solchen Bescheinigung, bei der sichergestellt ist, dass die gültige gesetzliche Zeit aufgenommen wurde, und bei denen Fälschungen und Verfälschungen ausgeschlossen sind. Bei den heute verwendeten Verfahren enthält der qualifizierte Zeitstempel einen Hash-Wert des bescheinigten Dokumentes und die aktuelle Zeitangabe (Datum und Uhrzeit), und sind mit einer qualifizierten elektronischen Signatur des Ausstellers versehen.
Ausgewählte Beispiele
Mit PHP kann der Zeitstempel wie folgt angezeigt werden:
<?php echo time(); // Zeitstempel des aktuellen Datum, z.B.: 1214617821 echo mktime(0, 31, 30, 02, 14, 2009); // ergibt: 1234567890 // Am Samstag, 14.02.2009 00:31:30 war der Zeitstempel genau 1234567890 ?>
Mit Visual Basic kann der Zeitstempel wie folgt angezeigt werden:
Dim jetzt As Date = Date.Now Console.WriteLine(jetzt.Ticks) ' ergibt: 633702174022502000 Dim jetzt As Date = #2/14/2009 12:31:00 AM# Console.WriteLine(jetzt.Ticks) ' ergibt: 633701682600000000
Mit C# kann der Zeitstempel wie folgt angezeigt werden:
System.DateTime jetzt = System.DateTime.Now; Console.WriteLine(jetzt.Ticks); // ergibt: 633702174022502000 System.DateTime jetzt = 14/02/2009 00:31:00; Console.WriteLine(jetzt.Ticks); // ergibt: 633701682600000000
Siehe auch
Weblinks
- RFC 3161, mit dem das Time-Stamp Protocol (TSP) definiert wird
- UNIX Timestamp berechnen
- Linux-Timestamp-Wandler von Bolutions
- Windows Command Line Tool zum Umrechnen in der Eingabeaufforderung (cmd) - clickbay.de
Wikimedia Foundation.