www.wikidata.de-de.nina.az
Die Unixzeit ist eine Zeitdefinition die fur das Betriebssystem Unix entwickelt und als POSIX Standard festgelegt wurde Die Unixzeit zahlt die vergangenen Sekunden seit Donnerstag dem 1 Januar 1970 00 00 Uhr UTC Das Startdatum wird auch als The Epoch siehe Epoche bezeichnet Die Umschaltung von einer Sekunde zur nachsten ist synchron zur UTC Schaltsekunden werden ignoriert 1 eine Schaltsekunde hat den gleichen Zeitstempel wie die Sekunde davor Vor Unix Version 6 1975 zahlte die Unix Uhr in Hundertstelsekunden daher musste die Epoche jedes Jahr neu festgelegt werden Inhaltsverzeichnis 1 Eigenschaften 1 1 Umrechnung 1 2 Jahr 2038 Problem 1 3 Schaltsekunden 2 Vergleich 3 Besondere Werte 4 Unix Befehle 5 Beispiel Implementierung 6 Weblinks 7 EinzelnachweiseEigenschaften BearbeitenUmrechnung Bearbeiten Die Umrechnung in eine menschenlesbare Form einschliesslich der Anwendung von Zeitzonen Sommerzeit und Schaltjahren werden dann von zusatzlichen Funktionen der Standardbibliothek ubernommen Die Darstellung des Datums als Sekunden seit der Unix Epoche wird haufig verwendet weil sie fur Computerprogramme viel leichter zu verarbeiten ist als das menschliche Datumsformat Es lassen sich mit diesen Werten leicht Zeitraume als Differenzen von Sekunden berechnen Sommer oder Winterzeit Zeitzonen und Schaltsekunden spielen dann keine Rolle mehr Aus diesem Grund wird dieser Wert auch gerne als Zeitstempel verwendet In praktisch allen Server Anwendungen spielt der Zeitstempel eine tragende Rolle so etwa im Umfeld von PHP oder MySQL Applikationen bei der Unterscheidung und Generierung zeitbezogener Datenbank Eintrage Die vordefinierten PHP Funktionen date und mktime ermoglichen hier beispielsweise durch das Einsetzen passender Funktionsargumente die einfache Konvertierung eines Zeitstempels in ein menschenlesbares Datumsformat und umgekehrt Jahr 2038 Problem Bearbeiten Hauptartikel Jahr 2038 Problem nbsp Exemplarische Darstellung des Jahr 2038 ProblemsDer POSIX Standard verlangt fur die Zeitangabe in Sekunden seit 1 Januar 1970 mindestens eine vorzeichenbehaftete 32 Bit Zahl Integer Somit umfasst die Unixzeit garantiert 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 Uhr UTC wird es daher bei Computersystemen welche die Unixzeit in einer vorzeichenbehafteten 32 Bit Variable speichern zu einem Uberlauf und mithin zu einem Rucksprung kommen Unixzeiten vor dem 13 Dezember 1901 20 45 52 UTC sind mit einer vorzeichenbehafteten 32 Bit Zahl auch nicht darstellbar da die Zeitstempel kleiner als 2 147 483 648 waren Moderne Unix Systeme verwenden zumindest in ihrer 64 Bit Variante eine vorzeichenbehaftete 64 Bit Zahl bei der das Risiko eines Uberlaufs ohne praktische Relevanz ist Hier liessen sich Zeitspannen von bis zu 292 Milliarden Jahren korrekt darstellen Eingebettete Systeme auf Unix Basis sind zurzeit noch nahezu ausschliesslich 32 Bit Systeme Die fortlaufende Entwicklung technische Gerate z B Router Radiowecker bis hin zu Automobilen und Flugzeugen mit eingebetteten Systemen auf Unix Basis auszustatten bedingt dass diese Gerate ab dem 19 Januar 2038 nicht mehr korrekt funktionieren Verwendet ein Entwickler den vorzeichenlosen unsigned 32 bit Typ konnte er die Unix Zeit noch bis uber das Jahr 2100 hinaus verwenden Das gilt allerdings nicht wenn er die Standardbibliothek nutzt Diese ist auf den minimalen POSIX Standard festgelegt Schaltsekunden Bearbeiten Schaltsekunden werden in der Unixzeit nicht mitgezahlt da sie nicht regelmassig auftreten sondern je nach schwankender Erdrotation nur sechs Monate vor ihrer Einfugung angekundigt werden Alle Tage sind in Unixzeit genau 24 3600 Sekunden lang Zeitdifferenzen in Unixzeit die uber eine Schaltsekunde hinweggehen sind daher um diese Sekunde zu kurz 2 In den letzten Jahren gab es mehrere Versuche im Rahmen der POSIX Standardisierung eine Darstellung der Schaltsekunde zur POSIX Unix Zeitdefinition hinzuzufugen Die Diskussionen zu diesem Thema fuhrten jedoch bislang nicht zu einem allgemein akzeptierten Ergebnis Vergleich BearbeitenFur die menschliche Anwendung sind auf Abschnitte herunter gebrochenen Zeiten etwa Anzahl Jahre Monate Tage Stunde mit zusatzlichen Angaben fur Zeitzone und Sommerzeit ubersichtlicher Soweit eine alltagliche Zeit ohne Angabe von Sommerzeit und Zeitzone erfolgt bleibt sie fur eine computertechnische Verarbeitung allerdings noch unvollstandig Die gebrochene Darstellung macht Berechnungen in jedem Fall aufwandiger Unix bietet eine Konvertierung der Unixzeit in eine gebrochene Darstellung mittels localtime an Sommerzeit und Zeitzone werden von dieser Funktion fur den Anwender meist unsichtbar aus administrativen Einstellungen des Systems bezogen deshalb local time In den DOS Systemen war die gebrochene Zeit aber ohne Zeitzonenangabe das Standardformat und wird auf FAT Dateisystemen fur Zeitstempel der Dateien in einer kompakten Darstellung gespeichert Eine Zeitangabe kann auch als Gleitkommazahl gespeichert werden Dabei konnen auch sehr weit entfernte Zeitangaben gespeichert werden teils Millionen Jahre entfernt dann aber mit verminderter Zeitgenauigkeit Eine Auflosung von unter einer Sekunde ist z B mit einem Double Wert fur die nachsten 140 Millionen Jahre moglich Siehe auch Julianisches DatumBesondere Werte Bearbeiten nbsp Das Unix Millennium wurde am 9 Sep 2001 in Kopenhagen auf einer Party der danischen Unix User Group um 03 46 40 Ortszeit gefeiertUnix Enthusiasten haben es sich zum Brauch gemacht zu bestimmten Werten der Unixzeit sogenannte time t Partys ahnliche den Neujahrsfeiern zum Jahreswechsel zu veranstalten Ublicherweise werden runde Dezimal Werte wie 1 000 000 000 oder 2 000 000 000 gefeiert Unter manchen Benutzern werden allerdings auch runde Binar Werte gefeiert beispielsweise 230 1 073 741 824 welcher auf den 10 Jan 2004 13 37 04 UTC fiel Am 13 Feb 2009 um 23 31 30 UTC 14 Feb 2009 um 00 31 30 CET erreichte die Unixzeit den Wert 1234567890 Heise Online erwahnte dieses Ereignis in seinem Newsticker 3 Diese Zeitpunkte werden ublicherweise als n Sekunden seit der Unix Epoche gefeiert Durch die Einfuhrung von Schaltsekunden ist diese Bezeichnung allerdings nicht ganz korrekt Wert Zeitpunkt UTC arithm dezimal hexadez 231 2 147 483 648 80 00 00 00 13 Dez 1901 20 45 52 230 1 073 741 824 B0 00 00 00 23 Dez 1935 10 22 56 1 000 000 000 C4 65 36 00 24 April 1938 22 13 20 229 536 870 912 E0 00 00 00 27 Dez 1952 05 11 28 228 268 435 456 F0 00 00 00 30 Juni 1961 02 35 440 00 00 00 00 1 Jan 1970 00 00 00216 65 536 00 01 00 00 1 Jan 1970 18 12 16224 16 777 216 01 00 00 00 14 Juli 1970 04 20 16100 000 000 05 F5 E1 00 3 Marz 1973 09 46 40228 0 268 435 456 10 00 00 00 4 Juli 1978 21 24 16500 000 000 1D CD 65 00 5 Nov 1985 00 53 20229 0 536 870 912 20 00 00 00 5 Jan 1987 18 48 32805 306 368 30 00 00 00 9 Juli 1995 16 12 481 000 000 000 3B 9A CA 00 9 Sep 2001 01 46 40230 1 073 741 824 40 00 00 00 10 Jan 2004 13 37 041 111 111 111 42 3A 35 C7 18 Marz 2005 01 58 311 234 567 890 49 96 02 D2 13 Feb 2009 23 31 301 300 000 000 4D 7C 6D 00 13 Marz 2011 07 06 401 342 177 280 50 00 00 00 13 Juli 2012 11 01 201 400 000 000 53 72 4E 00 13 Mai 2014 16 53 201 500 000 000 59 68 2F 00 14 Juli 2017 02 40 001 600 000 000 5F 5E 10 00 13 Sep 2020 12 26 401 5 230 1 610 612 736 60 00 00 00 14 Jan 2021 08 25 361 700 000 000 65 53 F1 00 14 Nov 2023 22 13 201 800 000 000 6B 49 D2 00 15 Jan 2027 08 00 001 879 048 192 70 00 00 00 18 Juli 2029 05 49 521 900 000 000 71 3F B3 00 17 Marz 2030 17 46 402 000 000 000 77 35 94 00 18 Mai 2033 03 33 202 100 000 000 7D 2B 75 00 18 Juli 2036 13 20 00231 1 2 147 483 647 7F FF FF FF 19 Jan 2038 03 14 07Bei Verwendung des vorzeichenlosen unsigned 32 bit Typ232 1 4 294 967 295 FF FF FF FF 7 Feb 2106 06 28 15Unix Befehle BearbeitenBei einigen Unix ahnlichen Systemen lasst sich mittels nachstehendem Befehl eine Unixzeit in die aquivalente UTC Zeit umrechnen das Verhalten von date aus dem Beispiel ist nicht Bestandteil des POSIX Standards date u d UNIXTIME Beispiel date u d 1234567890 Fr 13 Feb 23 31 30 UTC 2009 Umgekehrt lasst sich die aktuelle Anzahl der vergangenen Sekunden seit dem 1 Januar 1970 auf einigen Unix Linux Systemen mittels date s anzeigen das Verhalten von date ist auch hier nicht Bestandteil des POSIX Standards Beispiel Implementierung BearbeitenMochte man die Unixzeit zu einem gegebenen Zeitpunkt berechnen lasst sich das uber folgenden Rechenweg bewerkstelligen Die Unixzeit kennt keine Zeitzonen Sie nutzt als Eingabe eine von Zeitzonen bereinigte Zeit Schaltsekunden werden mangels Vorhersagbarkeit weder fur die Vergangenheit noch fur die Zukunft berucksichtigt Achtung Der folgende Quelltext ist in der Programmiersprache C verfasst und arbeitet mit maschinenabhangigen Datentypen Das Jahr 2038 Problem tritt bei diesem Programm jedoch nicht auf da der verwendete Datentyp long long mindestens 64 Bits besitzt Wie jeder Beispielquelltext dient er allein der Illustration und sollte ohne Uberprufung nicht in den Praxiseinsatz ubernommen werden Konvertiert gegliederte UTC Angaben in Unix Zeit Parameter und ihre Werte Bereiche jahr 1970 2038 monat 1 12 tag 1 31 stunde 0 23 minute 0 59 sekunde 0 59 long long unixzeit int jahr int monat int tag int stunde int minute int sekunde const short tage seit jahresanfang 12 Anzahl der Tage seit Jahresanfang ohne Tage des aktuellen Monats und ohne Schalttag 0 31 59 90 120 151 181 212 243 273 304 334 int schaltjahre jahr 1 1968 4 Anzahl der Schaltjahre seit 1970 ohne das evtl laufende Schaltjahr jahr 1 1900 100 jahr 1 1600 400 long long tage seit 1970 jahr 1970 365 schaltjahre tage seit jahresanfang monat 1 tag 1 if monat gt 2 amp amp jahr 4 0 amp amp jahr 100 0 jahr 400 0 tage seit 1970 1 Schalttag wenn jahr Schaltjahr ist return sekunde 60 minute 60 stunde 24 tage seit 1970 Eine Umrechnung von einer gegebenen Unixzeit in unsere gewohnliche Datums und Zeitdarstellung ist mit folgender Funktion moglich void UnixzeitNachDatumZeit unsigned long int unixtime int pJahr int pMonat int pTag int pStunde int pMinute int pSekunde const unsigned long int SEKUNDEN PRO TAG 86400ul 24 60 60 const unsigned long int TAGE IM GEMEINJAHR 365ul kein Schaltjahr const unsigned long int TAGE IN 4 JAHREN 1461ul 4 365 1 const unsigned long int TAGE IN 100 JAHREN 36524ul 100 365 25 1 const unsigned long int TAGE IN 400 JAHREN 146097ul 400 365 100 4 1 const unsigned long int TAGN AD 1970 01 01 719468ul Tagnummer bezogen auf den 1 Maerz des Jahres Null unsigned long int TagN TAGN AD 1970 01 01 unixtime SEKUNDEN PRO TAG unsigned long int Sekunden seit Mitternacht unixtime SEKUNDEN PRO TAG unsigned long int temp Schaltjahrregel des Gregorianischen Kalenders Jedes durch 100 teilbare Jahr ist kein Schaltjahr es sei denn es ist durch 400 teilbar temp 4 TagN TAGE IN 100 JAHREN 1 TAGE IN 400 JAHREN 1 pJahr 100 temp TagN TAGE IN 100 JAHREN temp temp 4 Schaltjahrregel des Julianischen Kalenders Jedes durch 4 teilbare Jahr ist ein Schaltjahr temp 4 TagN TAGE IM GEMEINJAHR 1 TAGE IN 4 JAHREN 1 pJahr temp TagN TAGE IM GEMEINJAHR temp temp 4 TagN enthaelt jetzt nur noch die Tage des errechneten Jahres bezogen auf den 1 Maerz pMonat 5 TagN 2 153 pTag TagN pMonat 153 2 5 1 153 31 30 31 30 31 Tage fuer die 5 Monate von Maerz bis Juli 153 31 30 31 30 31 Tage fuer die 5 Monate von August bis Dezember 31 28 Tage fuer Januar und Februar siehe unten 2 Justierung der Rundung 1 Der erste Tag im Monat ist 1 und nicht 0 pMonat 3 vom Jahr das am 1 Maerz beginnt auf unser normales Jahr umrechnen if pMonat gt 12 Monate 13 und 14 entsprechen 1 Januar und 2 Februar des naechsten Jahres pMonat 12 pJahr pStunde Sekunden seit Mitternacht 3600 pMinute Sekunden seit Mitternacht 3600 60 pSekunde Sekunden seit Mitternacht 60 Diese Funktion erwartet als Eingangsparameter eine vorzeichenlose Ganzzahl unsigned long int Nach dem C Standard sind das mindestens 32 Bit Die Funktion liefert somit korrekte Ergebnisse bis mindestens zum Januar 2106 Weblinks BearbeitenAktuelle Unixzeit Unixtime Umrechner mit bidirektionaler UmrechnungEinzelnachweise Bearbeiten The Open Group Base Specifications Issue 7 Rationale section 4 16 Seconds Since the Epoch The OpenGroup abgerufen am 22 Januar 2017 General Concepts Abgerufen am 5 Mai 2018 Jurgen Schmidt 1234567890 Heise online 14 Feb 2009 archiviert im Internet Archive Abgerufen von https de wikipedia org w index php title Unixzeit amp oldid 227200164