Jani Giannoudis 27.08.2023, 11:50 Uhr

Time-Period-Bibliothek für .NET 7

Der Schweizer Entwickler Jani Giannoudis hat eine Time-Period-Bibliothek für .NET entwickelt, die er jetzt für .NET 7 aktualisiert hat.
(Quelle: GitHub.com)
Bei der Implementierung einer Software für ein anderes Projekt stiess Giannoudis auf mehrere Anforderungen, die Berechnungen mit Zeiträumen beinhalteten. Diese Berechnungen waren ein wichtiger Teil der Lösung und stellten hohe Anforderungen an die Korrektheit und Genauigkeit der Ergebnisse. Die geforderte Funktionalität umfasste die folgenden Bereiche:
  • Unterstützung für einzelne Zeiträume
  • Arbeiten mit Kalenderperioden innerhalb von Kalenderjahren
  • Arbeiten mit vom Kalenderjahr abweichenden Kalenderperioden (Steuer- oder Schulperioden)
  • Arbeiten mit dem Abrechnungs- und Broadcast-Kalender
  • Die Zeitberechnungen sollten sowohl für Serverkomponenten (Web Services und Tasks) als auch für einen Rich Client (WPF und Silverlight) sowie mobile Geräte zur Verfügung gestellt werden.
Die Analyse der Situation brachte ihn zu dem Schluss, dass weder die Komponenten des .NET Frameworks noch andere verfügbare Tools alle Anforderungen abdecken würden. Darum entschloss er sich, eine generische Bibliothek für diesen Zweck zu entwickeln.
Aus mehreren Entwicklungszyklen entstand die Bibliothek Time Period, die inzwischen für die folgenden .NET-Laufzeitumgebungen verfügbar ist:
  • .NET Framework ab Version 3.5 oder neuer
  • .NET Core, jetzt inklusive .NET 7
  • .NET Mono
  • Universal Windows Plattform – UWP
.NET Framework bietet bereits die umfangreichen Basisklassen DateTime und TimeSpan für grundlegende zeitbezogene Berechnungen. Die Bibliothek Time Period erweitert das .NET Framework um mehrere Klassen zur Behandlung von Zeiträumen. Solche Zeiträume sind grundsätzlich durch einen Start, eine Dauer und ein Ende gekennzeichnet. Per Definition liegt der Beginn immer vor dem Ende. Der Beginn wird als undefiniert angesehen, wenn er den minimal möglichen Wert (DateTime.MinValue) hat. Ebenso ist das Ende undefiniert, wenn es den maximal möglichen Wert (DateTime.MaxValue) hat. Die Implementierung dieser Zeiträume basiert auf der Schnittstelle ITimePeriod und wird durch die Spezialisierungen ITimeRange, ITimeBlock und ITimeInterval erweitert.
Seine Bibliothek teilt Jani Giannoudis auf GitHub unter https://github.com/Giannoudis/TimePeriodLibrary. Auf CodeProject beschreibt er sein Projekt im Detail.

Bernhard Lauer
Autor(in) Bernhard Lauer


Das könnte Sie auch interessieren