[lug-ld] S) Antw. signed long (Datum/Zeit) bearbeitet

Volker Gass vGass at gmx.de
Mo Mär 16 16:10:12 CET 2020


Liebe LUGer, Heinz und
alle anderen, Zitat: "Erbsenzähler, Dippelschisser"

Ich habe aus Versehen tatsächlich das SQL-Datum falsch mit Punkt als
Trennzeichen bei dem Uhrzeitformat angegeben - man möge mir verzeihen...
Aber beim Gültigkeitsbereich war es dann aber doch richtig.

Ich möchte noch anmerken: die ISO-Norm erlaubt es tatsächlich, bei
Eindeutigkeit auch das "T" vor der Uhrzeit weg zu lassen. Die "Norm"
ISO 1980 gilt seit 2019-09 ;-) als offizieller Standard (auch) für
Deutschland, aber wegen der fehlenden Akzeptanz ist das alte, zuvor
gültige Format (DIN 1355 und DIN 1355-1) immer noch geduldet.
(Ächtz: alles genormt, typisch Deutsch, typisch Dippelschisser!)

Doch das geht am Thema vorbei: dieses Datumsformat ist nur ein Format
zur Darstellung, nicht die interne Abbildung einer Datenstruktur.

Genau betrachtet haben wir es mit drei Dingen zu tun:
* einen Timestamp, der den aktuellen Moment beschreibt
* ein Format, wie man Zeitinformationen und Intervalle wiedergibt
* eine Datenstruktur, die einen Punkt im Zeitstrom abbilden kann.

Die Linuxwelt würde es (locker) schaffen, die alte Datenstruktur zu
modifizieren, damit sie ein Weilchen länger ausreicht. Aber damit wäre
nur die "Epoche" verschoben und man müßte zu jedem Timestamp die Meta-
information mitführen, wie die Bits, Bytes (Vorzeichen) entsprechend zu
interpretieren sind. Der Aufwand dazu ist zu hoch, das rentiert sich
nicht und dafür ist in alten Datenstrukturen (Datei-Systeme!) auch gar
kein Platz vorgesehen.

Man hat sich auf einen Standard geeinigt, der, vor langer Zeit (in
den siebzigern?) entwickelt wurde. In diesen Jahren hatte man, wie
Christian richtig einbrachte, noch nicht die notwendigen Ressourcen
(=Rechenpower!), um mit größeren Zahlen vernünftig umzugehen. Da waren
16 Bit schon recht fortschrittlich, ambitioniert und weit gedacht.

Statt an dem alten System einer Unix-Epoche weiter herumzuwursteln
muß ein neuer Standard her, der neu definiert sein muß.

Man hätte in der Zwischenzeit das "Thema" ruhig mal anpacken sollen,
statt ewig mit den inzwischen überholten, ollen Kamellen weiter zu
machen. Du hat mein unglücklich gewähltes Beispiel mit NTP gleich
erkannt und auseinander genommen (Dippelschisser! ;-) ), aber bei dem
"neuen" NTP geht es auch wieder nur darum, die aktuelle Zeit so genau
wie möglich, aber eben auch kompatibel, zu übermitteln. Natürlich wird
sich das, wie anderes auch, weiter entwickeln müssen.

Dir geht es nicht um die Darstellung des aktuelle Datums und der
Uhrzeit, sondern um Datenstrukturen, die einen aktuellen Punkt im
Zeitstrom beschreiben und auch mathematische und logische Prozesse
zulassen.

Die Datenstrukturen, die heutzutage statt Unix-Timestamps verwendet
werden können, sind aber alles separate Entwicklungen. Diese haben
letztendlich, als Basis zum Austausch, nur die genormte Darstellung.

Einfach zwei Integerzahlen, egal ob Long, doppel-, tipple- quadrupel-
oder sonst-was-lang, miteinander zu vergleichen oder zusammenzurechnen,
geht damit nicht mehr. Du wolltest eine Änderung - damit hast Du wohl
mehr bekommen, als Dir lieb ist.

Doch keine Angst: die neuen Software-Bibliotheken haben Routinen, mit
denen sich Differenzen, Intervalle usw. gut und genau abbilden und
berechnen lassen. Damit geht mehr als vorher, aber auch mit deutlich
mehr Aufwand.

Die internen Datenstrukturen haben dabei nicht mehr zu interessieren,
die Zeiträume gehen i.d.R. weiter, als praktisch anwendbar.

...


Ein Gimmick noch zum Schluß: das Millenium-Problem beruhte darauf, das
ein Datum tatsächlich "komprimiert" in zwei Bytes gepackt war. Keine
Sekunden in irgendeiner "Epoche", sondern tatsächlich ein Datum in 16 Bit
gepackt.

Für das Jahr waren, damit man die 99 abbilden konnte, 7 Bits notwendig.
Mit den sieben Bits kommt man aber bis 127 - das Format (die Struktur!)
wäre damit noch heute nutzbar, theoretisch noch bis Ende 2027...

Also: bevor die Menschheit, scheinbar am Rand der Welt angekommen, in die
Unendlichkeit stürzt, findet "man" immer wieder ein Weg, sich die Welt ein
bischen größer zu machen... ;-)

Gruß
   V.

--

.+... Volker Gass
..+.. Phone +49 6346 965956
...+. Fax   +49 6346 965957