Arbeit mit Daten in C# (.NET): Integrierte Werkzeuge und Bibliotheken

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeit mit Daten in C# (.NET): Integrierte Werkzeuge und beliebte Bibliotheken



Die Arbeit mit Datums- und Zeitangaben ist eine der Kernaufgaben in jeder ernsthaften Entwicklung. Im C# (.NET)-Ökosystem gibt es dafür sowohl leistungsstarke integrierte Typen (DateTime, DateTimeOffset, TimeSpan) als auch Drittanbieter-Bibliotheken, die komplexe Operationen vereinfachen – wie die Arbeit mit Zeitzonen, menschenlesbare Darstellung und das Parsen nicht standardisierter Formate. In diesem Artikel werden wir die wichtigsten Werkzeuge für die Arbeit mit Daten in C# im Detail besprechen.



Integrierte .NET-Typen



Die Basisklasse System.DateTime bietet Methoden zum Erstellen, Vergleichen, für Arithmetik und Formatierung von Daten. Sie unterstützt einen Bereich vom 01.01.0001 bis 31.12.9999.



// Datum erstellenDateTime now = DateTime.Now;                // lokale ZeitDateTime utcNow = DateTime.UtcNow;          // UTCDateTime specific = new DateTime(2025, 3, 15, 14, 30, 0);

// ArithmetikDateTime tomorrow = now.AddDays(1);TimeSpan diff = tomorrow - now;Console.WriteLine(diff.TotalHours); // 24

// Parsingstring dateStr = "2025-12-31";DateTime parsed = DateTime.Parse(dateStr, CultureInfo.InvariantCulture);

// FormatierungConsole.WriteLine(now.ToString("dd.MM.yyyy HH:mm")); // 15.03.2025 14:30


DateTimeOffset ist eine verbesserte Version, die den Offset relativ zur UTC speichert. Es wird für Anwendungen empfohlen, die mit verschiedenen Zeitzonen arbeiten.



DateTimeOffset nowOffset = DateTimeOffset.Now;Console.WriteLine(nowOffset.Offset); // +03:00 (systemabhängig)


TimeSpan – zur Darstellung von Zeitintervallen. Ideal zum Messen der Dauer von Operationen.



TimeSpan duration = new TimeSpan(2, 15, 30); // 2 Stunden 15 Minuten 30 SekundenConsole.WriteLine(duration.TotalMinutes);     // 135.5


Bibliothek NodaTime



NodaTime ist eine alternative Bibliothek für die Arbeit mit Datums- und Zeitangaben, erstellt von Jon Skeet (Autor von C#-Büchern). Sie löst viele Probleme von DateTime, wie Mehrdeutigkeit und das Fehlen einer strengen Typisierung von Zeitzonen.



Installation über NuGet:

dotnet add package NodaTime


Wichtige Typen:

  • Instant – ein Zeitpunkt (Analog zu Unix-Timestamp)
  • LocalDateTime – Datum+Zeit ohne Zeitzonenbindung
  • ZonedDateTime – Datum+Zeit in einer bestimmten Zeitzone
  • Duration und Period – Intervalle (Analog zu TimeSpan, aber Period berücksichtigt Kalendereinheiten)


using NodaTime;

// Aktueller Moment in UTCInstant now = SystemClock.Instance.GetCurrentInstant();Console.WriteLine(now.ToDateTimeUtc()); // kann in DateTime umgewandelt werden

// Arbeit mit ZeitzonenDateTimeZone tz = DateTimeZoneProviders.Tzdb["Europe/Moscow"];ZonedDateTime moscowTime = now.InZone(tz);Console.WriteLine(moscowTime); // 2025-03-15T17:30:00 Europe/Moscow (+03)

// Period – Differenz in KalendereinheitenLocalDate start = new LocalDate(2024, 1, 1);LocalDate end = new LocalDate(2025, 3, 15);Period period = Period.Between(start, end);Console.WriteLine($"Vergangen {period.Years} Jahre, {period.Months} Monate, {period.Days} Tage");// Vergangen 1 Jahre, 2 Monate, 14 Tage


Vorteile von NodaTime: strenge Typisierung, korrekte Arbeit mit historischen Zeitzonen, Unterstützung für Kalender (islamisch, jüdisch usw.), keine Mehrdeutigkeiten bei Zeitumstellungen.



Bibliothek Humanizer



Humanizer ist eine Bibliothek zur "Vermenschlichung" von Daten, einschließlich Datums- und Zeitangaben und Intervallen. Sie ermöglicht die Ausgabe von Daten in einer lesbaren Form: "gestern", "in 3 Stunden", "vor 2 Tagen".



Installation:

dotnet add package Humanizer


Anwendungsbeispiele

Empfehlungen