-
rc3 nowhere Vorspann
-
Herald: Hallo und herzlich willkommen
zurück auf dem Kanal und zwar zu unserem
-
ersten Live Talk. Unser nächster Speaker
ist Satan, er studiert Medientechnologie
-
an der TU Illmenau und arbeitet außerdem
im Bereich Machine Learning. In seiner
-
Freizeit beschäftigt er sich mit Assembly
Script und ist dabei auf die Zeitzonen
-
Datenbank der IANA gestoßen. Und was er
dort gefunden hat, das erzählt uns jetzt.
-
For English speaking viewers: There's a
translation. To listen to it in the web
-
player select language selection and than
translated. Und jetzt Bühne frei für
-
Satan.
-
Satan: Danke schön. Genau. Herzlich
willkommen zu meinem Talk über eine
-
Zeitzonen Datenbank und warum man die am
besten nicht selbst implementieren sollte.
-
Genau. Erst mal so, was ich jetzt erzählen
werde. Erstmal so grundsätzliches so über
-
die IANA Zeitzonen Datenbank, was es ist
und was so die Hauptaspekt sind, die da
-
drin enthalten sind. Und dann werde ich
anhand von Beispielen und Spezialitäten,
-
die darin enthalten sind, die
Funktionalitäten darstellen. Und am Ende
-
kommt noch mal eine kleine Zusammenfassung
darüber, was man damit dann machen kann.
-
Genau, also grundsätzlich ist die
Zeitzonen Datenbank, von der IANA
-
veröffentlicht, das ist die Internet
Assigned Numbers Authority, die kümmert
-
sich darum, um so Sachen wie DNS oder
Zeitzonen oder eben auch wie IP-Adressen.
-
Andere Namen für die Zeitzonen Datenbank
sind auch tz, tzdb oder zoneinfo. Das
-
kennt man aus unterschiedlichen Libraries
oder sowas. Kommen einem diese Begriffe
-
vielleicht bekannt vor. Und die Idee
dahinter ist, dass man eine möglichst
-
vollständige Liste aller Zeitzonen und
Regeln hinter diesen Zeitzonen und
-
Offsets, die dadurch entstehen. Für alle
Länder weltweit und also nicht nur Länder,
-
sondern auch Gebiete, das ist nicht
unbedingt immer geografisch
-
[kurz fehlendes Audio] Zeit Differenzen
auszurechnen. Diese Datenbank wird ständig
-
aktualisiert, das heißt immer wenn
irgendwo ein Gesetz veröffentlicht wird
-
oder irgendwo irgendwelche neuen Länder
entstehen oder sonst irgendetwas passiert,
-
was eine Änderung dafür nötig macht, wird
die geupdated und ist, dann wird dann
-
verteilt möglichst schnell, damit alle
Systeme, die eben auf solchen, auf diesen
-
Datenbanken basieren, möglichst schnell
upgedated werden. Auch, man könnte jetzt
-
erwarten, dass sie irgendwie erst seit
kurzem die Daten enthält. Aber in dieser
-
Datenbank sind eigentlich so Zeitzonen
auch für die längere Vergangenheit
-
enthalten. Auch vor 1970 und 1972, also
zum Beispiel 1970, hat ja die Unix-Zeit
-
begonnen und erst seit 1972 gibt es die
UTC. Das ist die Coordinated Universal
-
Time. Genau, dann so grundsätzliches zu
der Datenbank, wie sie aufgebaut ist. Es
-
ist eine öffentlich erreichbare Ordner mit
Dateien. Es sind einfach nur Textdateien.
-
Es gibt z.B. über die Website kann man das
erreichen, da kann man sich tar-Archive
-
herunterladen oder es gibt ein git-Repo in
dem man die sich runterladen kann. Es gibt
-
auch einen FTP-Server oder ein rsync-
Server dafür, also das ist möglichst
-
flexibel gehalten, damit sich damit ja der
Aufwand, daran zu kommen, möglichst gering
-
ist. Das Ganze besteht aus Textdateien.
Das ist einfach. Und diese Textdateien
-
sind nach Kontinent aufgeteilt. Zum
Beispiel gibt es eine Textdatei für
-
Europa, eine Textdatei für Nordamerika und
so etwas. Und in dieser Textdatei sind CSV
-
ähnliche, in dem Fall eher als CSV steht
für comma separated values. In dem Fall
-
ist es character separated values, weil
das sind Tab separierte Tabellen, in denen
-
eben diese Daten gespeichert werden.
Daneben sind in diesen Datei noch ganz,
-
ganz viele Kommentare, in denen steht,
warum etwas geändert wurde, wann sich
-
etwas geändert wurde und eben auch Links
dazu zu den Gesetzestexten und sonstigen
-
Referenzen, die eben hilfreich sind, um
die Datenbank zu verstehen. Zusätzlich
-
gibt es da noch in diesem Ordner noch ein
paar Scripte, mit denen man sich diese
-
einigermaßen Menschen lesbaren Formate,
diese Tabellen in einen Maschienen
-
lesbares Format exportieren kann, um die
auch in Libraries und sowas zu verwenden,
-
um nicht immer den Text parsen zu müssen.
Eine der von den beiden grundsätzlichen
-
Haupt-Datenpunkten, die enthalten sind,
sind einmal die Zonen. Die sind meistens
-
so benannt nach einem Kontinent oder einem
Ozean und dann mit einem Schrägstrich und
-
dann eine große Stadt, die da drin ist,
z.B. jetzt hier in diesem Fall ist jetzt
-
ein Auszug aus der Europe-Datei und da
gibt es eben die Zone Europe/Berlin und
-
diese Tabellen enthalten eine Liste von
Regelsatz Änderungen, das heißt, da steht
-
sozusagen drin. Von wann bis wann muss
welcher Regelsatz angewendet werden? Was
-
das genau ist, komme ich noch später dazu.
Und was da eben auch drinsteht ist der
-
Base Offset. Also sozusagen für diese
Zeitzone der Offset, den alle Gebiete in
-
dieser Zone grundsätzlich erstmal haben.
Und was es auch noch gibt, ist eben diese
-
Format-Spalte und diese Format-Spalte ist
sozusagen der, ein Name für diese
-
Zeitzone. Und das sind auch, seht ihr
dieses %s, aber da komme ich später noch
-
mal genauer dazu. Das zweite sind die
Regeln. Das sind die ganzen Regelsätze und
-
jede Zeile ist sozusagen eine Regel, wann
irgendwo sich ein Offset ändert und was da
-
zum Beispiel auch enthalten sind. Seht ihr
die letzte Spalte, die Letter-Spalte? Da
-
steht zum Beispiel dann ein Buchstabe
drin, der dann in diesen Namen von der
-
Zeitzone eingefügt wird. Und zum Beispiel
ist auch eine interessante Sache an diesen
-
Regelsätzen. Das ist für Wechsel auf
Sommerzeit und Wechsel auf Winterzeit zwei
-
unterschiedliche Regeln gibt. Das heißt,
es kann sozusagen sich die .. der Wechsel
-
auf die Winterzeit kann sich häufiger
ändern als der Wechsel auf die Sommerzeit.
-
Und jetzt kommen wir zu den kleinen
Beispielen die ich euch zeigen werde, um
-
sozusagen die Syntax und wie das Ganze
aufgebaut ist, näher zu bringen, und ab
-
sofort werde ich auch nicht mehr den Code
anzeigen, sondern schöner formatierte
-
Tabellen, damit es ein bisschen besser
lesbar ist. Genau das erste ist Zion, das
-
ist das erste, ein Gebiet, und das ist das
erste, was ich gefunden habe, weil wir
-
haben einen, ich habe einen Parser gebaut,
sozusagen, um dieses menschenlesbare
-
Format auszulesen, und es war am Anfang
war das Pasing nur für einzelne Dateien.
-
Und als ich dann das Pasinger mal für alle
Dateien getestet habe, ist eben an dieser
-
Stelle der Parser fehlgeschlagen, weil
diese Syntax Fri <= 1 in der kompletten
-
Datenbank genau einmal vorkommt. Und was
ist diese Syntax eigentlich bedeutet? Wir
-
haben jetzt hier dieses, das "IN" und das
"ON" Feld sozusagen bestimmen, sozusagen
-
wann diese und das "AT" Feld auch,
bestimmen, sozusagen wann dieser Übergang,
-
also wann dieses Offset sozusagen, was in
dem Safe in der Spalte steht, angewendet
-
wird. Und wenn da Fri <= 1 steht, bedeutet
das, dass es der erste Freitag im April
-
ist, aber maximal der erste. Das heißt,
wenn der Freitag, der erste Freitag im
-
April auf den zweiten oder oder bis zu den
sechsten fällt, dann nehmen wir den
-
Freitag aus dem Vormonat. Und das ist eben
schon genau eine dieser Stellen, die dann
-
sehr, sehr schwierig zu implementieren
ist. Wenn man dann diese Datenbank dann
-
auch verwenden will, sozusagen, also
Libraries dafür schreiben will. Dann ein
-
zweites Beispiel ist Lord Howe, das ist
eine Insel in Australien und dort gibt
-
es zum Beispiel eine, die haben eine
Winterzeit, eine Sommerzeit von oder
-
"Daylight Saving" von dreißig Minuten. Das
heißt, sie wechseln immer zwischen 0
-
Minuten Offset und 30 Minuten Offset. Und
das sehen wir zum Beispiel diese größer
-
gleich Syntax. Das ist eine ähnliche
Syntax mit größer gleich statt kleiner
-
gleich. Und die besagt eben, dass es der
erste Sonntag im Monat ist, aber minimal.
-
Der das heißt, dass es einfach immer nur
der erste Sonntag im Monat. Dann eine
-
interessante Sache, die ich gefunden habe,
ist Kriegs und Friedenszeit. Da gibt es im
-
US Regelsatz gibt es da zwei Regeln, also
Änderungen von den Offsets, einmal 1942
-
und 1945, die sozusagen diesen Letter für
"W" und "P" für war und peace setzen. Und
-
damit ist sozusagen wird an dieser
Zeitzonename gefüllt. Da komme ich auch
-
später noch mal dazu, wie das dann in den
Zonen aussieht. Was man da zum Beispiel
-
auch sieht ist, in der "TO" Spalte steht
ein "only" und das heißt, es wird, dieser
-
Wechsel findet nur in genau diesem einen
Jahr statt und danach nicht mehr. Genau
-
was man da auch sieht ist, in dem
"AT" Feld in der in der vierten Zeile ist
-
dieses "u". Es gibt da so kleine Suffixe,
die man hinten, die da hinten dranhängen
-
können. Da gibt es zum Beispiel "s", das
steht für Standard. Da ist dann der
-
sozusagen, der, wird der Base Offset aus
dem ähm, aus der aus der Zone verwendet.
-
Es gibt "g", dann wird sozusagen die Zeit
in Greenwich Mean Time verwendet, "u" für
-
UTC, was jetzt in dem Fall der Fall ist,
für wieder coordinated universal time oder
-
was zum Beispiel auch da stehen kann. Was
auch der Standard ist, ist "w" das heißt
-
"wall" für "wall clock" und das heißt, es
ist die Uhrzeit, die es an der Stelle zu
-
dem Zeitpunkt auch wirklich hätte, also
die man an der Stelle von der Uhr ablesen
-
würde. Und da hat es aber der Default, das
wird dann meistens weggelassen. Dann so
-
wie Sommer und Winterzeit funktioniert. Es
gibt, wie vorhin schon erwähnt, getrennte
-
Zeilen für Wechsel auf Sommerzeit und
Wechsel auf Winterzeit. Und das sieht man
-
jetzt hier an dem US Beispiel auch ganz
schön, dass sie ihre.. den Wechsel auf
-
Daylight Saving Time deutlich häufiger
geändert haben als auf Summertime. Was man
-
jetzt auch hier zum Beispiel sieht, ist in
dem "TO" Feld ein "max". Und dieses "max"
-
bedeutet sozusagen bis in die Gegenwart.
Implementiert ist das in manchen
-
Implementationen das an der Stelle einfach
der maximal integer genommen wird. Und
-
dann ist das irgendein Jahr ganz weit in
der Zukunft. Und das ist aber immer
-
sozusagen bis aktuell zur Gegenwart, was
das auch aktuell ist. Dann habe ich noch
-
Hawaii mitgebracht. Dort sieht man zum
Beispiel, das ist jetzt eine Zone bei der
-
Zone sieht man, das in der erst in den
ersten zwei Spalten, die Zeilen nicht
-
wiederholt werden. Das liegt daran, dass
sozusagen die Zone sich immer, auf die
-
gleiche Zone bezieht. Deswegen wird es
dann weggelassen. Und was man dort auch
-
sieht ist, das Format steht "LMT", also
Abkürzung. Das ist dann die Abkürzung für
-
die Zeitzone, in der Format-Spalte und
"LMT" steht für Local Mean Time und ist
-
eigentlich gar kein richtiger Zeitzonen
Name, wird aber innerhalb der Datenbank
-
immer verwendet, wenn es zu dem Zeitpunkt
keinen richtigen Namen dafür gibt, weil
-
nichts veröffentlicht ist oder sonst
irgendetwas. Das sieht man auch, das es,
-
dieser Name geht sozusagen bis 1896. Das
heißt, das ist schon eine ganze Weile her,
-
bevor man überhaupt so viel mit Zeitzonen,
so was sich Gedanken gemacht hat. Was man
-
auch hier an dem Hawaii Beispiel sieht,
ist dieses "%s" in der vierten Zeile im
-
Format. Und an dieser Stelle wird dann so,
wird dann der Buchstabe, der in der Regel
-
festgelegt wird, eingesetzt. Da muss eine
Sache, die man da beachten muss, ist, dass
-
das führt. Damit das funktioniert, muss
für diesen Zeitpunkt oder für diesen
-
Bereich auch ein Regelsatz gelten, weil
zum Beispiel, wenn er jetzt ein Minus oder
-
eine einfache Zahl steht, dann gilt da
kein Regelsatz. Und dadurch ist natürlich
-
auch kein Buchstabe dafür definiert. Was
man jetzt genau ich auch gerade schon
-
erwähnt hatte, ist das auch eine Zahl
stehen kann in "RULES", in "RULES" stehen
-
sozusagen welcher Regelsatz gerade
angewendet wird. Wenn ein Minus steht,
-
gibt es einfach kein Regelsatz, dann geht
es einfach nur der Standard-Offset. Wenn
-
da eine einfache Zahl steht, also eine
Stunden und Minuten Zahl, dann ist das
-
sozusagen der Offset. Und wenn ein, eine
Buchstabenkombination da steht, dann ist
-
das das Regelsätze auf der zu dem
Zeitpunkt gilt. Genau dann habe ich noch
-
Alaska. Alaska wurde 1867 von Russland an
die USA verkauft und dadurch haben sie
-
ihren Offset von +15h auf -9h, also
ungefähr gewechselt, um sozusagen einmal
-
auf die andere Seite der der Datumsgrenze
zu gehen. Und was daran auch interessant
-
ist, ist das, dass dieser Tag sozusagen
doppelt stattgefunden hat, weil es
-
sozusagen um 15:33 Uhr, dann im Jahr 1867
haben sie um 24 Stunden zurückgesetzt die
-
Uhrzeit und dann hat der Tag sozusagen
noch mal stattgefunden. Jetzt noch mal
-
eine kleine Zusammenfassung, wie das alles
gemeinsam funktioniert. Wir gucken jetzt
-
die Zeitzone und den Regelsatz an, der
aktuell bei uns gilt. Wir haben jetzt hier
-
die Zone Europe/Berlin. Das ist für
Deutschland die Zone, die verwendet wird.
-
Und wir sehen, dass der vorletzte Eintrag
bis 1980 gilt. Das heißt, wir sind darüber
-
hinaus. Und wenn das "UNTIL" Feld leer
ist, heißt es einfach bis jetzt. Und da
-
sehen wir, wir haben einen Standard-Offset
von einer Stunde und der Regelsatz, der
-
gerade gilt, ist "EU" und das Format, also
der Name ist "CE" und dann der Platzhalter
-
und ein großes T. Jetzt schauen wir uns
den EU Regelsatz also an, der aktuell
-
gilt. Da haben wir seit 1981 und 1996
gelten eben diese beiden Regeln, um in
-
Sommerzeit oder Winterzeit zu wechseln und
zwischen Oktober und März gilt die untere
-
Regel. Also wir haben sozusagen im Oktober
haben wir die untere Regel angewendet, um
-
den Safe, also den zusätzlichen Offset auf
Null zu setzen, das heißt, wir haben einen
-
Standard-Offset von eins plus unserem Safe
von Null. Das heißt, wir sind aktuell bei
-
einem gesamten Offset von UTC von Null.
Und jetzt können wir uns noch den Letter
-
angucken, da es aktuell ist, ist da ein
Strich, das heißt einfach nichts. Und wenn
-
wir das jetzt in das Template einsetzen,
steht da CET und das ist Central European
-
Time. Und wenn wir jetzt sozusagen in der
Sommerzeit wären, würde da ein "S" drin
-
stehen und dann hätten wir Central
European Summertime. Genau das wäre es
-
jetzt auch so von meiner Seite aus. Ich
danke euch vielmals für eure
-
Aufmerksamkeit und wünsche euch gestern
noch viel Spaß auf dem Rest vom Kongress.
-
Genau, wenn ihr jetzt.. ich habe noch ein
paar Links. Wenn ihr noch Fragen habt,
-
dann könnt ihr mir per Mastodon schreiben.
Und noch einen Link zur Zeitzonen
-
Datenbank.
-
Herald: Genau. Vielen Dank Satan..
Satan: Dankeschön.
-
Herald: .. für den interessanten Talk.
Genau. Im Anschluss an den Talk wird es
-
eine kleine Breakout Session geben und
Satan wird da auch noch mal zur Verfügung
-
stehen. Das passiert in der rc3 World im
FEM Office. Das müsste jetzt auch noch
-
eingeblendet werden. Genau perfekt. Und
hier auf dem FEM-Kanal wird es jetzt dann
-
um 19 Uhr mit der nächsten Herald Newsshow
weitergehen und um 20:15 Uhr mit dem
-
nächsten Talk zu Grundlagen der Video
Kompression. Bis dahin und vielleicht bis
-
gleich.
-
rc3 nowhere Abspann
-
Untertitel erstellt von c3subtitles.de
im Jahr 2022. Mach mit und hilf uns!