Icon Rufen Sie uns an
+49 441.309197-69 +49 441.309197-69
 
DE

Verschiedene Zeitformate in Go

Posted by Ruben Schuller on Tuesday, January 05, 2016

Über mich:

Hallo, ich bin Ruben Schuller und seit Anfang 2015 bei bytemine als studentische Hilfskraft tätig, vorwiegend im Bereich Softwareentwicklung. Neben verschiedenen Tools, IDB Clients und Adaptern bin ich auch massgeblich an der Entwicklung und Bereitstellung unseres Self-Service Hosting Portals beteiligt.

Zeitformate in Go

Im Rahmen des Hackathons entstand eine Go Client-Bibliothek für die IDB um das Erstellen von IDB Clients und Adaptern zu vereinfachen. Hierbei kam das Problem auf, dass die Zeitstempel welche durch die IDB Public API mittels JSON zur Verfügung gestellt werden, durchaus verschiedene Formate haben können (beispielsweise wenn die Quelle für diese Zeitstempel eine andere Software ist welche nur ein Format bereitstellt). Intern sollte die Bibliothek jedoch den time.Time Typen der Go-Standardbibliothek statt einer Stringdarstellung verwenden.

Die Standardbibliothek bietet mit time.Parse eine Funktion mit der Zeitdarstellungen in einem (auch selbst definierten) Format geparsed werden können. Diese Funktion kann aber immer nur ein Format zur Zeit verwenden und gibt einen Fehler zurück wenn die Eingabe nicht diesem Format entspricht.

Aus diesem Grund wurde eine kleines Paket, wooly, erstellt, welche für das Parsing eine Liste von Formaten durchgeht und erst dann mit einem Fehler abbricht wenn die Eingabe mit keinem dieser Formate korrekt eingelesen werden kann. So können ohne großen Aufwand Zeitangaben in vielen verschiedenen Formaten eingelesen werden, ohne das diese Funktionalität mehrfach implementiert werden müsste.

Die Dokumentation von wooly ist auf godoc.org zu finden und beinhaltet auch einige kleine Beispiele zur Verwendung.

Für Bugreports, Anregungen und Pull Requests sind wir natürlich dankbar!