Arbeit mit Daten in C# (.NET): Überblick über Bibliotheken und integrierte Mittel

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): von integrierten Mitteln bis zu spezialisierten Bibliotheken



Die Arbeit mit Datum und Zeit ist eine der zentralen Aufgaben bei der Entwicklung jeder Anwendung: von Webdiensten bis zu Desktop-Programmen. Die .NET-Plattform bietet leistungsstarke integrierte Mittel wie DateTime, DateTimeOffset und TimeSpan. In komplexen Szenarien (Arbeit mit Zeitzonen, menschenlesbare Intervalle, Parsing nicht standardisierter Formate) greifen Entwickler jedoch häufig auf externe Bibliotheken zurück. In diesem Artikel betrachten wir die wichtigsten Werkzeuge für die Arbeit mit Daten in C#.



1. Integrierte Mittel von .NET



Basis-Typen für die Arbeit mit Daten in .NET:



  • DateTime — repräsentiert einen Zeitpunkt (Datum + Uhrzeit). Unterstützt Addition, Subtraktion und Vergleichsoperationen.
  • DateTimeOffset — ähnlich wie DateTime, jedoch mit expliziter Angabe des UTC-Offsets. Empfohlen für die Datenspeicherung in verteilten Systemen.
  • TimeSpan — ein Zeitintervall (z. B. 2 Stunden 30 Minuten).
  • DateOnly und TimeOnly (seit .NET 6) — für die getrennte Speicherung von Datum und Uhrzeit ohne überflüssige Daten.


Beispiel für die Verwendung von DateTime:

using System;

DateTime now = DateTime.Now;DateTime utcNow = DateTime.UtcNow;DateTime specificDate = new DateTime(2025, 3, 15, 14, 30, 0);

// Formatierungstring formatted = now.ToString("dd.MM.yyyy HH:mm:ss");Console.WriteLine(formatted); // 15.03.2025 14:30:00

// ArithmetikDateTime tomorrow = now.AddDays(1);TimeSpan diff = tomorrow - now;Console.WriteLine($"Bis morgen: {diff.TotalHours} Stunden");


Parsing von Daten aus Zeichenketten:

string dateStr = "2025-03-15";if (DateTime.TryParse(dateStr, out DateTime result)){    Console.WriteLine(result.ToShortDateString());}

// Parsing mit Angabe der Kulturvar culture = new System.Globalization.CultureInfo("ru-RU");DateTime parsed = DateTime.Parse("15 марта 2025", culture);


2. Noda Time — erweiterte Arbeit mit Datum und Zeit



Noda Time — eine alternative Bibliothek aus der Community, die entwickelt wurde, um die Nachteile des integrierten DateTime zu beheben. Hauptmerkmale:



  • Klare Trennung der Konzepte: Instant (Zeitpunkt in UTC), LocalDateTime (Datum+Uhrzeit ohne Zeitzonenbindung), ZonedDateTime (mit Zeitzone).
  • Vollständige Unterstützung von Zeitzonen über die IANA-Datenbank (Olson).
  • Unveränderliche (immutable) Typen — sicher in Multithread-Code.
  • Menschenlesbare Intervalle (Period): 2 Jahre, 3 Monate, 5 Tage.


Beispiel für die Arbeit mit Noda Time:

using NodaTime;using NodaTime.Text;

// Aktueller Zeitpunkt in UTCInstant now = SystemClock.Instance.GetCurrentInstant();Console.WriteLine($"Instant: {now}");

// Umwandlung in lokale Zeit mit ZeitzoneDateTimeZone zone = DateTimeZoneProviders.Tzdb["Europe/Moscow"];ZonedDateTime moscowTime = now.InZone(zone);Console.WriteLine($"Zeit in Moskau: {moscowTime}");

// Parsing eines Datums in einem bestimmten Formatvar pattern = LocalDatePattern.CreateWithInvariantCulture("yyyy-MM-dd");LocalDate date = pattern.Parse("2025-03-15").Value;Console.WriteLine(date); // 15. März 2025

// Arbeit mit PeriodenLocalDate start = new LocalDate(2025, 1, 1);LocalDate end = new LocalDate(2025, 12, 31);Period period = Period.Between(start, end, PeriodUnits.Days);Console.WriteLine($"Tage zwischen den Daten: {period.Days}");


3. Humanizer — menschenlesbare Daten und Intervalle



Humanizer — eine Bibliothek zur Umwandlung von Zahlen, Daten und Zeichenketten in eine für Menschen lesbare Form. Im Kontext von Daten o

Empfehlungen