Unix-Timestamp

Unix-Timestamp

Die Unixzeit ist eine einfache Zeitdefinition, die 1969 für das Betriebssystem Unix entwickelt und als POSIX-Standard festgelegt wurde. In den ersten Tagen von Unix wurde die Definition mehrfach geändert. Seit mehreren Jahrzehnten ist sie jedoch stabil. Die Unixzeit zählt die vergangenen Sekunden seit dem 1. Januar 1970 00:00 h UTC, wobei Schaltsekunden nicht mitgezählt werden. Dieses Startdatum wird auch als The EPOCH (vgl. Epoche) bezeichnet.

Inhaltsverzeichnis

Eigenschaften

Umrechnung

Die Umrechnung in eine menschenlesbare Form sowie die Anwendung von Zeitzonen, Sommerzeit und Schaltjahren werden dann von zusätzlichen Funktionen der Standardbibliothek übernommen. Die Darstellung des Datums als Sekunden seit der Unix-Epoche wird häufig verwendet, weil sie für Computerprogramme viel leichter zu lesen ist als das „menschliche“ Datumsformat. Außerdem lassen sich mit diesen Werten leicht Zeiträume berechnen, indem man einfach den einen Wert vom anderen abzieht. Umstellung auf Sommer- oder Winterzeit spielen dann keine Rolle mehr. Aus diesem Grund wird dieser Wert auch gerne als Zeitstempel verwendet. In vielen modernen Server-Anwendungen spielt der Timestamp aufgrund dieser Vorteile weiterhin eine tragende Rolle, so z. B. im Umfeld von PHP/MySQL-Applikationen bei der Unterscheidung und Generierung zeitbezogener Datenbank-Einträge. Die vordefinierten PHP-Funktionen date() und mktime() ermöglichen hier beispielsweise durch das Einsetzen passender Funktionsargumente die einfache Konvertierung eines Timestamps in ein menschenlesbares Datumsformat und umgekehrt.

Jahr-2038-Problem

Viele, aber bei weitem nicht alle Systeme, welche die Unixzeit verwenden, speichern und verarbeiten die Zeitangabe als vorzeichenbehaftete 32-Bit-Zahl (Integer). Somit umfasst der Sekundenraum die Werte −2.147.483.648 bis +2.147.483.647. Umgerechnet in Jahre entspricht dies etwas mehr als −68 bis +68.

Am 19. Januar 2038 um 3:14:08 h UTC wird es daher bei Computersystemen, welche die Unixzeit in einer vorzeichenbehafteten 32-Bit-Variable speichern, zu einem Speicher-Überlauf kommen. Die darzustellende Zeit wird dann mit der 2.147.483.648en Sekunde nicht mehr in der Variable gespeichert werden können, womit es dann zum Jahr-2038-Problem kommen würde.

Unixzeiten vor dem 13. Dezember 1901 20:45:52 UTC sind mit einer vorzeichenbehafteten 32-Bit-Zahl auch nicht darstellbar, da die Timestamps kleiner als −2.147.483.648 wären.

Schaltsekunde

Zeitangaben in Unixzeit sind nicht immer ganz so problemlos, wie es auf den ersten Blick erscheint. Das hat die Unixzeit durchaus mit anderen Zeitangaben gemeinsam, da unser übliches Zeitsystem, das auf der Annäherung an astronomische/physikalische Gegebenheiten beruht, ebenfalls gelegentlich gewechselt wurde. Zudem verschiebt sich die Definition der Sekunde als Teil des Tages gegenüber der physikalischen Definition, da die Erdrotation aufgrund von Gezeitenkräften durch den Mond immer langsamer wird (s. a. Schaltsekunde). The EPOCH der Unixzeit ist heute beispielsweise als 1. Januar 1970 00:00 h UTC definiert. Jedoch gab es zu dieser Zeit das heutige UTC-System noch gar nicht, es wurde in der jetzigen Form erst 1972 eingeführt. Der Zeitpunkt der Epoche ist eigentlich der 1. Januar 1970 00:00 h GMT. Zu diesem Zeitpunkt sind zurückgerechnete UTC-Zeit und GMT-Zeit zufällig identisch. Jedoch stimmen UTC-Unixzeiten vor dem 1. Januar 1972 aufgrund unterschiedlicher Schaltsekunden in UTC und GMT nicht immer exakt mit den damals gebrauchten GMT-Zeitangaben überein. Unixzeit eignet sich daher nicht für die sekundengenaue Zeitdarstellung jeder beliebigen Zeit vor dem 1. Januar 1972.

Vergleich

Die Unixzeit hat sich im Computerbereich vor allem durch die weite Verwendung für Zeitstempel durchgesetzt, da die Zeitdifferenz zwischen zwei Ereignissen eine Subtraktion zweier Integer-Werte ist. Dies kann durch moderne Rechenwerke in einem Takt erfolgen. Dies ist sinnvoll für Hochdurchsatz bei Spezialanwendungen wie Kommunikationselementen (Internet) und Dateiservern (auch Datenbanken). Tatsächlich basieren viele der handelsüblichen Netzwerkgeräte intern auf einem angepassten Unixsystem.

Für die menschliche Anwendung sinnvoller sind oft die gebrochenen Zeiten, bei der die übliche UTC-Zeit in sechs Zahlen für Jahr, Monat, Tag, Stunde, Minute, Sekunde ausgedrückt wird. Auch Unix kennt eine Konvertierung der Unixzeit in eine gebrochene Darstellung mittels localtime(). In den DOS-Systemen war die gebrochene Zeit dagegen das Standardformat, und wird auf FAT-Dateisystemen für Zeitstempel der Dateien in einer kompakten Darstellung gespeichert. Die gebrochene Darstellung macht jedoch Berechnungen aufwändig.

In modernen Systemen setzt sich zunehmend durch, die Zeitstempel als Gleitkommazahl zu speichern, da moderne CPUs oft Rechenwerke besitzen, die auch die aufwändigere Arithmetik dieser Zahlen in einem Takt bewältigen. Die Gleitkommazahlen können auch sehr weit entfernte Zeitangaben speichern, teils Millionen Jahre entfernt, dann aber unter verminderter Zeitgenauigkeit. Eine sekundengenaue Angabe erfolgt nur nahe der Basiszeit (Epoche), die der Gleitkomma-Null entspricht.

Siehe auch: Julianisches Datum

Besondere Werte

Das Unix-Millennium wurde in Kopenhagen auf einer Party der dänischen UNIX User Group um 03:46:40 Ortszeit gefeiert

Unix-Enthusiasten haben es zum Brauch gemacht, zu bestimmten Werten der Unixzeit sogenannte time_t parties – ähnliche den Neujahrsfeiern zum Jahreswechsel – zu veranstalten. Üblicherweise werden runde Dezimal-Werte, wie 1.000.000.000 oder 2.000.000.000 gefeiert. Unter manchen Benutzern werden allerdings auch runde Binär-Werte gefeiert, beispielsweise +230 (1.073.741.824), welcher auf den 10. Januar 2004 13:37:04 UTC fiel. Am 13. Februar 2009 um 23:31:30 UTC (14. Februar 2009 um 00:31:30 CET) schaltete der Suchmaschinenbetreiber Google ein spezielles Doodle, da die Unixzeit in diesem Moment den Wert 1234567890 erreichte. Auch der Heise Newsticker spendierte diesem Wert einen eigenen Artikel [1].

Durch die Einführung von Schaltsekunden sind diese Werte allerdings nicht korrekt. Dennoch werden diese Zeitpunkte üblicherweise als „n Sekunden seit der Unix-Epoche“ gefeiert.

Wert Zeitpunkt (UTC)
100000000 3. März 1973 09:46:40
1000000000 9. September 2001 01:46:40
230 = 1073741824 10. Januar 2004 13:37:04
1111111111 18. März 2005 01:58:31
1234567890 13. Februar 2009 23:31:30
0x50000000 13. Juli 2012 11:01:20
0x60000000 14. Januar 2021 08:25:36
0x70000000 18. Juli 2029 05:49:52
2000000000 18. Mai 2033 03:33:20
0x7FFFFFFF 19. Januar 2038 03:14:07

Tipp: Auf Unix und ähnlichen Systemen lässt sich mittels nachstehendem Befehl Unixzeit in die äquivalente UTC Zeit umrechnen.

date -u -d @UNIXTIME

Beispiel:

date -u -d @1234567890
Fr 13. Feb 23:31:30 UTC 2009

Umgekehrt lässt sich die aktuelle Anzahl der vergangenen Sekunden seit dem 01.01.1970 mittels "date +%s" anzeigen.

Einzelnachweise

  1. http://www.heise.de/newsticker/1234567890--/meldung/132347

Weblinks


Wikimedia Foundation.

Игры ⚽ Нужно сделать НИР?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • UNIX timestamp — Эта статья о формате кодирования времени; об утилите см.: time (Unix). UNIX время или POSIX время (англ. Unix time)  способ кодирования времени, принятый в POSIX совместимых операционных системах. Моментом начала отсчёта считается полночь (по… …   Википедия

  • Unix timestamp — Эта статья о формате кодирования времени; об утилите см.: time (Unix). UNIX время или POSIX время (англ. Unix time)  способ кодирования времени, принятый в POSIX совместимых операционных системах. Моментом начала отсчёта считается полночь (по… …   Википедия

  • Unix time — Unix time, or POSIX time, is a system for describing points in time, defined as the number of seconds elapsed since midnight Coordinated Universal Time (UTC) of January 1 1970, not counting leap seconds. It is widely used not only on Unix like… …   Wikipedia

  • Timestamp — es una secuencia de caracteres, que denotan la hora y fecha (o alguna de ellas) en la cual ocurrió determinado evento. Esta información es comúnmente presentada en un formato consistente, lo que permite la fácil comparación entre dos diferentes… …   Wikipedia Español

  • 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… …   Deutsch Wikipedia

  • Timestamp (informatique) — Timestamp désigne en informatique un compteur numérique servant de référence temporelle et représente le nombre de secondes écoulées depuis un instant de référence. Description C est un mot composé venant de l anglais « time » (heure)… …   Wikipédia en Français

  • Timestamp — A timestamp is a sequence of characters, denoting the date and/or time at which a certain event occurred. This data is usually presented in a consistent format, allowing for easy comparison of two different records and tracking progress over… …   Wikipedia

  • Unix-Epoche — Die Unixzeit ist eine einfache Zeitdefinition, die 1969 für das Betriebssystem Unix entwickelt und als POSIX Standard festgelegt wurde. In den ersten Tagen von Unix wurde die Definition mehrfach geändert. Seit mehreren Jahrzehnten ist sie jedoch… …   Deutsch Wikipedia

  • Unix-Zeit — Die Unixzeit ist eine einfache Zeitdefinition, die 1969 für das Betriebssystem Unix entwickelt und als POSIX Standard festgelegt wurde. In den ersten Tagen von Unix wurde die Definition mehrfach geändert. Seit mehreren Jahrzehnten ist sie jedoch… …   Deutsch Wikipedia

  • UNIX-время — Эта статья о формате кодирования времени; об утилите см.: time (Unix). UNIX время (англ. Unix time) или POSIX время  система описания моментов во времени, принятая в UNIX и других POSIX совместимых операционных системах. Определяется… …   Википедия

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”