 Hallo und herzlich willkommen zurück auf dem Studio-Kanal und zwar zu unserem ersten Live-Talk. Unser nächster Speaker ist Sartan, er studiert Medientechnologie an der TU Imenau und arbeitet außerdem im Bereich Machine Learning. In seiner Freizeit beschäftigt er sich mit Assemblieskript und ist dabei auf die Zeitzonen-Latenbank der IANA gestoßen und was er dort gefunden hat, erzählt er uns jetzt. Vor Englisch-Speaking-Viewers, der ist die Translation to listen to it in the MyPlayer Select Language Selection and then translated und jetzt bühne frei für Sartan. Dankeschön. Genau, herzlich willkommen zu meinem Talk über Zeitzonen-Latenbank und warum man die am besten nicht selbst implementieren sollte. Genau. Erstmal so was ich jetzt erzählen werde, erstmal so grundsätzlich ist so über die IANA Zeitzonen-Latenbank, was es ist und was so die Hauptaspekte sind, die da drin enthalten sind. Dann werde ich anhand von Beispielen und Spezialitäten, die da drin 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-Latenbank von der IANA veröffentlicht, das ist die Internet Assign Number Authority, die kümmert sich darum, um so Sachen wie DNS oder Zeitzonen oder eben auch VIP-Adressen. Andere Namen für die Zeitzonen-Latenbank sind auch TZ, TZDB oder ZoneInfo, das kennt man aus unterschiedlichen Libreys oder sowas, kommt 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 grafisch Zeitdifferenzen auszurechnen. Diese Datenbank wird ständig aktualisiert, das heißt immer, wenn irgendwo ein Gesetz veröffentlicht wird oder irgendwo neue Länder entstehen oder sonst irgendetwas sich passiert, was eine Änderung dafür nötig macht, wird die geupdatet und wird dann verteilt möglichst schnell, damit alle Systeme, die eben auf diese Datenbank basieren, möglichst schnell abgedatet werden. Man könnte jetzt erwarten, dass sie erst seit Kurzen die Daten enthält, aber in dieser Datenbank sind eigentlich so Zeitzonen in der auch längere Vergangenheit enthalten, auch vor 1970 und 1972, also zum Beispiel hat ja die Unix Zeit begonnen und seit 1972 gibt es die UTC, das ist die Coordinated Universal Time. Genau, dann so grundsätzlich ist zu der Datenbank, wie sie aufgebaut ist, es ist eine öffentlich erreichbare Ordner mit Dateien, es sind einfach nur Textdateien, es gibt zum Beispiel über die Webseite kann man das erreichen, da kann man sich TAR-Archive herunterladen oder es gibt ein Git-Repo, in dem man die sich herunterladen kann, es gibt auch ein FTP-Server oder ein AirSync-Server dafür, also das ist möglichst flexibel gehalten, damit sich der Aufwand daran zu kommen, möglichst gering ist. Das ganze besteht aus Textdateien, das ist einfach und diese Textdateien sind für, sind auch Kontinentaufenthalte, zum Beispiel gibt es eine Textdatei für Europa, ein Textdatei für Nordamerika und so etwas und in dieser Textdatei sind CSV-ähnliche, also in dem Fall eher, also CSV steht für Commer Separated Values, in dem Fall ist es Character Separated Values, weil das sind TAP-separierte Tabellen, in denen eben diese Daten gespeichert werden. Daneben sind in diesem 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 solchen sonstigen Referenzen, die da, die eben hilfreich sind, um die Datenbank zu verstehen. Zusätzlich gibt es dann auch in diesem Ordner noch ein paar Skripte, mit denen man sich diese einigermaßen menschenlesbaren Formate, diese Tabellen in ein maschinenlesbares Format exportieren kann, um die auch in Libraries und so etwas zu verwenden, um nicht immer den Text pasen zu müssen. Genau, dann eine der von den beiden grundsätzlichen Hauptdatenpunkten, die enthalten sind, sind einmal die Zonen, die sind meistens so benannt nach einem Kontinent oder Ozean und dann mit einem Schrägstrich und dann eine große Stadt, die da drin ist, zum Beispiel jetzt wieder in diesem Fall ist jetzt ein Auszug aus dem Europe-Datei und da gibt es eben die Zone Europe Slash Berlin und diese, diese Tabellen enthalten eine Liste von Regelsatzänderungen, das heißt, da steht, 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 drin steht, ist der Base Offset, also sozusagen für diese Zeitzone der Offset, den alle, alle Gebiete in dieser Zone grundsätzlich erst mal haben. Und was es auch noch gibt, ist eben dieses Formid- Spalte und diese Formid-Spalte ist sozusagen der, ein Name für diese Zeitzone und das sind auch, seht ihr gerade dieses Prozent 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 z.B. auch enthalten sind, seht ihr die letzte Spalte der, die Letterspalte, da steht z.B. dann eine 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, dass es für Wechsel auf Sommerzeit und Wechsel auf Winterzeit zwei unterschiedliche Regeln gibt. Das heißt, es können sozusagen sich die, der Wechsel auf die Winterzeit kann sich häufiger ändern als der Wechsel auf die Sommerzeit. Und jetzt kommen wir zu, zu den kleinen Beispielen, die ich euch zeigen werde, um sozusagen die, die Sündtags und die, 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 Zion, das ist das erste, eine, ein Gebiet und das ist das erste, was ich gefunden habe, weil wir haben einen, ich habe einen PASA gebaut sozusagen, um dieses, dieses Menschen lesbare Format auszulesen und es war am Anfang, war das Pasing nur für einzelne Dateien und als ich dann das Pasing mal für alle Dateien getestet habe, ist eben an dieser Stelle der PASA fehlgeschlagen, weil dieses Sündtags free kleiner gleich eins in der kompletten Datenbank genau einmal vorkommt. Und was ist diese Sündtags eigentlich bedeutet? Wir haben jetzt hier dieses, das in und das on fällt sozusagen, bestimmen sozusagen, wann diese und das et fällt auch, bestimmen sozusagen, wann dieser Übergang, also wann dieses Offset sozusagen, was in dem Safe, in der Safe Spalte steht, angewendet wird und wenn da free kleiner gleich eins steht, bedeutet das, dass es der erste Freitag im April ist, aber maximal der erste. Das heißt, wenn der Freitag im, der erste Freitag im April auf den zweiten 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 Library's dafür schreiben will. Dann ein zweites Beispiel ist Lord Howell, das ist eine Insel in Australien und dort gibt es zum Beispiel eine, die haben eine Winter, eine Sommerzeit von oder ein Daylight Saving von von 30 Minuten, das heißt, die wechseln immer zwischen 0 Minuten Offset und 30 Minuten Offset. Und da sehen wir jetzt zum Beispiel diese größer gleich Sündtags, also das ist eine ähnliche Sündtags, bloß mit größer gleich, statt kleiner gleich und die besagt eben, dass es der erste Sonntag im Monat ist, aber maximal, aber minimal der erste ist. Das heißt, es ist 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 auf W und P für W und P setzen und damit ist sozusagen, wird dann diese 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 dem Two, in der Two-Spalte, die dann 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 Atfeld, in der vierten Zeile, ist dieses kleine U. Es gibt da so kleine Suffixe, 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 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, wie der Coordinated Use Immersal Time oder was zum Beispiel auch da stehen kann, was auch der Standard ist, ist W, das heißt, 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 das aber der default ist, wird das 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 den Wechsel auf Daylight Saving Time deutlich häufiger geändert haben als auf Summertime. Was man jetzt auch hier zur Spiel sieht, ist in dem Two-Feld ein Max und dieses Max bedeutet sozusagen bis in die Gegenwart. Implementiert ist das in manche Implementationen, dass an der Stelle einfach der maximale 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 einen Hawaii mitgebracht, da sieht man zum Beispiel, das ist jetzt eine Zone. Bei der Zone sieht man, dass in den ersten, zweiten Spalten die Zeilen nicht wiederholt werden. Das liegt daran, dass sozusagen die Zone sich immer auf die gleiche Zone bezieht. Deswegen wird das 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 Formatspalte. Und LMT steht für local mean time und ist eigentlich gar kein richtiger Zeitzonenname, 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. Da sieht man auch, dass es dieser Name gilt sozusagen bis 1896. Das heißt, das ist schon eine ganze Weile her, bevor man überhaupt so viel mit Zeitzonen und 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 der Buchstabe, der in der Regel festgelegt wird, eingesetzt. Eine Sache, die man da beachten muss, ist, dass damit das funktioniert muss für diesen Zeitpunkt oder für diesen Bereich auch ein Regelsatz gelten, weil zum Beispiel, wenn da jetzt ein Minus oder eine einfache Zahl steht, dann gibt 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, dass auch eine Zahl stehen kann in Ruhls. In Ruhls stehen sozusagen, welcher Regelsatz gerade angewendet wird. Wenn da Minus steht, gibt es einfach keine Regelsatz, dann geht es dann einfach nur der Aufset, der Standort Offset. Wenn da eine einfache Zahl steht, also eine Stunde, noch Minutenzahl, dann ist das sozusagen der Offset und wenn eine Buchstabenkombination da steht, dann ist das das Regelsetz, 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 positiv 15 Stunden auf negativen 9 Stunden, also ungefähr, gewechselt, um sozusagen einmal auf die andere Seite der Datumsgrenze zu gehen. Und was daran auch interessant ist, ist, dass dieser Tag sozusagen doppelt stattgefunden hat, weil sozusagen um 15.33 Uhr im Jahr 1867 haben sie um 24 Stunden zurückgesetzt, die Uhrzeit und dann hat der Tag sozusagen nochmal stattgefunden. Jetzt nochmal das kleine Zusammenfassung, wie das dann alles gemeinsam funktioniert. Wir gucken jetzt die Zeitzone und den Regelsatz, an der aktuell bei uns gilt. Wir haben jetzt hier die Zone, hier Berlin, das ist für Deutschland die Zone, die verwendet wird und wir sehen, dass der der vorletzte Eintrag bis 1980 gilt. Das heißt, wir sind darüber hinaus und wenn das Antilfeld leer ist, heißt es einfach bis jetzt und da sehen wir, wir haben einen Standard Offset von einer Stunde und das Regelsatz, der Regelsatz, der gerade gilt, ist EU und das Format, also der Name ist CE, dann der Platzhalter und dann 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 und 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 Save, also den zusätzlichen Offset auf 0 zu setzen. Das heißt, wir haben einen Standard Offset von 1 plus unseren Save von 0, das heißt, wir sind aktuell bei einem gesamten Offset von UTC von 0. Jetzt können wir uns noch den Letter angucken, da ist aktuell ist da ein Strich, das heißt einfach nichts. 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 Summer Time. Genau, das wäre es jetzt auch so von meiner Seite aus. Ich danke euch vielmals für eure Aufmerksamkeit und wünsche euch jetzt dann noch viel Spaß im Rest vom Kongress. Genau, wenn ihr jetzt dann noch, habe ich noch ein paar Links, wenn ihr noch Fragen habt, dann könnt ihr mir per Masterton schreiben und noch ein Link zur Zeitzone Datenbank. Genau, vielen Dank, Satan, für den interessanten Talk. Genau, am Anschluss an den Talk wird es eine kleine Breakout-Session geben. Satan wird da auch noch mal zur Verfügung stehen. Das passiert in der RC3 World im Femm-Office. Das müsste jetzt auch noch eingeblendet werden. Genau, perfekt. Genau, und hier auf dem Femm-Kanal wird das jetzt dann um 19 Uhr mit der nächsten Herald News Show weitergehen und um 20.15 Uhr mit dem nächsten Talk zu Grundlagen der Videokompression. Bis dahin und vielleicht bis gleich.