- Zeitstempel
-
Ein Zeitstempel (englisch.: timestamp) ist ein Wert, der einem Ereignis einen eindeutigen Zeitpunkt zuordnet. Ein Beispiel dazu ist der Posteingangsstempel auf Briefen. Ein Zeitstempel hat seiner Anwendung entsprechend ein definiertes Format. Er kann auch fälschungssicher ausgeführt werden, wenn mit dem Zeitstempel Ereignisse nachgewiesen werden sollen. In der modernen, computerisierten Nachrichten- und Datentechnik werden Zeitstempel wegen der global unterschiedlichen Zeitzonen und damit möglichen Missverständnissen entweder generell in der koordinierten Weltzeit UTC angegeben oder mit einer Angabe ergänzt, welche die lokale Abweichung zur Weltzeitzone anzeigt. Damit können Zeitstempel korrekt in verschiedene lokale Zeiten umgerechnet werden.
Zeitstempel sind Bescheinigungen, dass ein elektronisches Dokument (oder der Hashwert ebendieses Dokumentes) zu der angegebenen Zeit dem Aussteller des Zeitstempels vorgelegen hat. Sie ergänzen den Einsatz der elektronischen Signaturen im Rechtsverkehr. Gerichte können so das fristgerechte Eintreffen einer Nachricht elektronisch bestätigen. Archive können so nachweisen, dass ein Dokument seit der Archivierung nicht geändert wurde. Auch bei großen Ausschreibungen werden Zeitstempel als Beleg und Absicherung der Angebote verwendet. 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 unterschreibt der Aussteller eines qualifizierten Zeitstempels als unbeteiligter Dritter den Hash-Wert des bescheinigten Dokumentes zusammen mit der aktuellen Zeitangabe (Datum und Uhrzeit) mit einer qualifizierten elektronischen Signatur. Das Time-Stamp Protocol (RFC 3161) regelt die Übertragung der Informationen eines Zeitstempeldienstes im Internet.
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. Diese Stempel auf Papier können kaum geändert oder vom Dokument getrennt werden.
Der Begriff Zeitstempel wird vor allem in der EDV verwendet. Betriebssysteme halten den Zeitpunkt der letzten Bearbeitung (oder des letzten Zugriffes, etc.) von Dokumenten, Datensätzen und ähnlichem im Dateisystem fest, dieser kann jedoch leicht vom Besitzer der Datei manipuliert werden und ist daher als Zeitstempel im Sinne eines Belegs wenig geeignet. Manche Datenbanksysteme verwenden Zeitstempel auf eine Mikrosekunde genau.
Inhaltsverzeichnis
Zeitstempel in Dateisystemen
Das bekannte FAT-Dateisystem nutzt für Zeitangaben die lokale Zeit mit einer Genauigkeit von 2 Sekunden. Die am weitesten verbreitete Art von Zeitstempeln in Dateisystemen ist wohl die Unixzeit, welche die Anzahl der Sekunden seit dem 1. Januar 1970 00:00 Uhr UTC (ohne Schaltsekunden) angibt. Die einheitlichen Unix-Datei-Zeitstempel erleichtern wesentlich die Vernetzung entfernt stehender Unix-Rechner und ihrer Dateisysteme im Internet. Bei Systemen, die diese Zahl unzureichend als vorzeichenbehaftete 32-Bit-Zahl kodieren, wird am 19. Januar 2038 ein Jahr-2038-Problem befürchtet. Eine Zeitauflösung in Mikrosekunden ist heute auf Digital-Rechnern nicht ungewöhnlich. 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. Bei der Synchronisierung von Dateisystemen kommt es unter Windows zu Problemen, da NTFS und FAT die Zeit mit verschiedener Genauigkeit auflösen.
Unterschiede in den Zeitangaben
Wichtig für die universelle Verwendung eines Zeitstempels mit lokaler Zeit (z. B. in einer E-Mail) ist die Ergänzung um die Angabe des Offsets zu UTC als numerische Angabe oder per Name wie MEZ bzw. MEST. Dies wird auch in ISO 8601 gefordert. Nur so kann ein vollständiger Vergleich von Zeitstempeln realisiert werden und das Berechnen von Zeitdifferenzen zwischen zwei Zeitstempeln 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.
Ausgabe einer Zeitinformation auf einem Rechner mit Zeitzone Europe/Berlin
Mit PHP kann der Zeitstempel wie folgt angezeigt werden:
<?php echo time(); // Unix-Zeit-Information des aktuellen Datums, z.B.: 1214617821 echo mktime(0, 31, 30, 02, 14, 2009); // ergibt: 1234567890 // Am Samstag, 14.02.2009 00:31:30 MEZ 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
Mit Ada kann der Zeitstempel wie folgt angezeigt werden:
with Ada.Calendar; use Ada.Calendar; with GNAT.Calendar.Time_IO; procedure timestamp is Now : Time := Clock; begin GNAT.Calendar.Time_Io.Put_Time (Now, "%s"); -- Achtung! Ada-Zeit beginnt 1970-01-01 00:00:00 UTC end;
Siehe auch
Weblinks
- RFC 3161, mit dem das Time-Stamp Protocol (TSP) definiert wird
- Linux-Timestamp-Wandler von Bolutions
- Windows Command Line Tool zum Umrechnen in der Eingabeaufforderung (cmd) - clickbay.de
- UNIX-Zeitstempel-Konverter - Ermittelt Datum/Uhrzeit zu einem Timestamp und umgekehrt
Wikimedia Foundation.