Einführung in die Arbeit mit Datum und Uhrzeit in C#
Die Arbeit mit Datum und Uhrzeit ist eine der grundlegenden Aufgaben in der Softwareentwicklung. Ob Ereignisprotokollierung, Berechnung von Fristen, Erstellung von Berichten oder die Arbeit mit Datenbanken – die Fähigkeit, zeitbezogene Daten korrekt zu verwalten, ist von entscheidender Bedeutung. In C# (.NET-Plattform) gibt es dafür einen leistungsstarken und flexiblen Satz von Werkzeugen, darunter die Strukturen DateTime, TimeSpan und DateTimeOffset.
In diesem Artikel werden wir alle wichtigen Aspekte der Arbeit mit Datum und Uhrzeit in C# im Detail behandeln. Sie erfahren, wie Sie zeitbezogene Daten erstellen, formatieren, vergleichen und manipulieren, und lernen bewährte Methoden kennen, die Ihnen helfen, häufige Fehler zu vermeiden.
Grundlegende Strukturen: DateTime, TimeSpan und DateTimeOffset
Die DateTime-Struktur
DateTime ist die primäre Struktur zur Darstellung eines Zeitpunkts (Datum + Uhrzeit). Sie kann Werte vom 01.01.0001 bis zum 31.12.9999 darstellen.
Erstellen eines DateTime-Objekts:
// Aktuelles Datum und UhrzeitDateTime now = DateTime.Now;DateTime utcNow = DateTime.UtcNow;
// Bestimmtes Datum und UhrzeitDateTime specificDate = new DateTime(2025, 3, 15, 14, 30, 0); // 15. März 2025, 14:30:00
// Parsen aus einem StringDateTime parsedDate = DateTime.Parse("2025-03-15");
// Verwendung von TryParse für sicheres Parsenif (DateTime.TryParse("2025-03-15", out DateTime result)){ Console.WriteLine($"Erfolgreich geparst: {result}");}Wichtige Eigenschaften und Methoden:
Date— gibt nur das Datum zurück (Uhrzeit = 00:00:00)Year,Month,Day,Hour,Minute,Second— einzelne KomponentenDayOfWeek— Wochentag (Enum)AddDays(),AddMonths(),AddYears()— Arithmetik mit DatenAddHours(),AddMinutes(),AddSeconds()— Arithmetik mit Uhrzeiten
Die TimeSpan-Struktur
TimeSpan stellt ein Zeitintervall dar (den Zeitraum zwischen zwei Zeitpunkten). Es ist kein Datum, sondern eine Dauer.
// TimeSpan erstellenTimeSpan interval = new TimeSpan(2, 15, 30); // 2 Stunden, 15 Minuten, 30 Sekunden
// Differenz zwischen zwei DatenDateTime start = new DateTime(2025, 1, 1);DateTime end = new DateTime(2025, 1, 10);TimeSpan difference = end - start; // 9 Tage
// TimeSpan-EigenschaftenConsole.WriteLine($"Tage: {difference.Days}"); // 9Console.WriteLine($"Gesamtstunden: {difference.TotalHours}"); // 216Console.WriteLine($"Gesamtminuten: {difference.TotalMinutes}"); // 12960
// Arithmetik mit TimeSpanTimeSpan workDay = new TimeSpan(8, 0, 0); // 8 StundenTimeSpan breakTime = new TimeSpan(1, 0, 0); // 1 StundeTimeSpan actualWork = workDay - breakTime; // 7 StundenDie DateTimeOffset-Struktur
DateTimeOffset ist eine verbesserte Version von DateTime, die den Offset zur UTC berücksichtigt. Dies ist entscheidend für Anwendungen, die mit Benutzern aus verschiedenen Zeitzonen arbeiten.
// Aktuelle Uhrzeit mit ZeitzonenberücksichtigungDateTimeOffset nowOffset = DateTimeOffset.Now;
// Erstellen mit Angabe des OffsetsDateTimeOffset withOffset = new DateTimeOffset(2025, 3, 15, 14, 0, 0, TimeSpan.FromHours(3));
// Konvertierung zwischen ZeitzonenDateTimeOffset utc = withOffset.ToUniversalTime();DateTimeOffset local = withOffset.ToLocalTime();
// Offset abrufenConsole.WriteLine($"Offset: {withOffset.Offset}"); // +03:00Wann sollte DateTimeOffset anstelle von DateTime verwendet werden? Wenn Ihre Anwendung mit Benutzern aus verschiedenen Zeitzonen arbeitet oder Daten in UTC speichert, verwenden Sie DateTimeOffset. Dies verhind