[lug-ld] S) In Linux angeblich ominöses Jahr 2038 Problen
Volker Gass
vGass at gmx.de
So Mär 15 20:02:53 CET 2020
Hallo Heinz,
liebe LUGer!
Ich nehme an, daß viele das Thema schon kennen, ich versuche ein klein(!)
wenig darauf einzugehen. Zur Übersicht empfehle ich, sich erst einmal bei
Wikipedia einzulesen: https://de.wikipedia.org/wiki/Unixzeit
Bei der "Unix-Zeit" redet man auch von einer sog. "Timestamp" - es geht
darum, daß das Dateisystem ein Datum hat und daß man vom System ein
aktuelles Datum und Uhrzeit bekommt.
Bis 2038 wird noch eine ganze Menge Wasser den Rhein / die Queich
hinunter laufen und nur wenige Betriebssysteme (und noch weniger Geräte)
werden diesen Zeitpunkt überhaupt erreichen. Viele der heutigen Datei-
systeme werden dann ein gehöriges Problem haben, falls man diese nicht
entsprechend anpaßt. Ob man diese dann aber 2038 noch einsetzt wage ich
zu bezweifeln - wir erleben gerade bei den Dateisystemen einen gehörigen
Paradigmenwechsel...
Die "blöde 32 Bit-Variable" kann man nicht einfach mal so ohne Vorzeichen
umdefinieren: worauf bezieht sich dann die Zahl? Auf 1970 oder doch auf
1901 oder gar auf 1904 (alte Mac-Version). Eine babylonische Zeit-
verwirrung wäre die Folge.
Gehen wir weg von einer 32 Bit Auflösung wird es dann eindeutig(er)...
Es gibt in unixoiden Systemen aber doch schon Programme und Protokolle,
die mit höherer Auflösung arbeiten (können), wie z.B. NTPv4.
Weitere werden bestimmt folgen...
In der Programmierung nutzt man meist ganz andere Zeit/Datums-Formate und
deren zugehörigen Bibliotheken, z.T. sogar in einer 128 Bit Auflösung.
Beispiele:
* In SQL hat man schon lange das ISO 8601 Format YYYY-MM-DD HH.MM.SS mit
nutzbaren Zeitraum von '1000-01-01 00:00:00' bis '9999-12-31 23:59:59' -
bei Bedarf mit einer 6-stelligen Auflösung (Mikrosekunden)
* Bei der Skriptsprache PHP stehen auch 64-Bit Funktionen zu Verfügung:
> The date and time information is internally stored as a 64-bit number
> so all conceivably useful dates (including negative years) are
> supported. The range is from about 292 billion years in the past to
> the same in the future.
das sollte wohl erst einmal reichen, oder?
* Python bietet gleich mehrere Bibliotheken zur Zeitberechnung...
...
Der Timestamp vom Unix/GNU-System dient z.Zt. vorwiegend nur noch dazu,
das aktuelle Datum und die Uhrzeit vom System abzurufen. Bis 2038 werden
bestimmt Lösungen für das Betriebs- und Filesystem gefunden werden. Ich
tippe aber eher darauf, daß diese nicht auf alten Bibliotheken aufbauen,
sondern neue Entwicklungen und Standards abbilden.
Ein Grund zur Panik oder zum Ärgern sehe ich nicht.
Nutze für Deine selbst erstellten Programme und Scripte einfach keine
Timestamps irgendeiner "Epoche", sondern ein "g'scheites" Datenformat...
...ist natürlich deutlich mehr Arbeit und Aufwand, als mit einer einfachen
Integer-Zahl herumzujonglieren - egal ob mit oder ohne Vorzeichen... ;-)
Gruß
Volker
(der aus'm Wald)
--
.+... Volker Gass
..+.. Phone +49 6346 965956
...+. Fax +49 6346 965957