Einleitung: Warum die Arbeit mit Datum und Uhrzeit in C# grundlegend für jeden Entwickler ist
Jeder C#-Entwickler steht früher oder später vor der Notwendigkeit, Datums- und Zeitangaben zu verarbeiten. Sei es die Protokollierung von Ereignissen, die Berechnung von Fristen in einer Geschäftsanwendung oder einfach die Ausgabe des aktuellen Datums auf dem Bildschirm – ohne sichere Beherrschung von DateTime und TimeSpan kommt man nicht aus. In diesem Artikel werden wir alle wichtigen Aspekte behandeln: von der Erstellung von Objekten bis zur Arbeit mit Zeitzonen und Leistung. Das Material eignet sich sowohl für Anfänger als auch für erfahrene Programmierer, die ihr Wissen systematisieren möchten.
Grundlegende Typen für die Arbeit mit Datum und Uhrzeit in .NET
In .NET gibt es mehrere Typen, von denen jeder seine eigene Aufgabe erfüllt. Betrachten wir die wichtigsten.
DateTime – die Grundlage
DateTime ist eine Struktur, die einen Zeitpunkt (Datum und Uhrzeit) darstellt. Sie unterstützt einen Bereich vom 01.01.0001 bis 31.12.9999. Ein Objekt kann auf verschiedene Weise erstellt werden:
// Aktuelles Datum und UhrzeitDateTime now = DateTime.Now;// Aktuelles Datum und Uhrzeit in UTCDateTime utcNow = DateTime.UtcNow;// Bestimmtes DatumDateTime specificDate = new DateTime(2025, 3, 15);// Datum und Uhrzeit mit SekundengenauigkeitDateTime withTime = new DateTime(2025, 3, 15, 14, 30, 0);// Heutiges Datum (Uhrzeit 00:00:00)DateTime today = DateTime.Today;TimeSpan – Zeitintervalle
TimeSpan stellt einen Zeitraum dar (die Differenz zwischen zwei Daten). Es eignet sich zur Berechnung der Dauer von Vorgängen:
// Erstellen eines IntervallsTimeSpan interval = new TimeSpan(2, 5, 30); // 2 Stunden, 5 Minuten, 30 Sekunden// Differenz zwischen DatenDateTime start = DateTime.Now;System.Threading.Thread.Sleep(1000); // ArbeitsimulationDateTime end = DateTime.Now;TimeSpan duration = end - start;Console.WriteLine($"Es sind {duration.TotalSeconds} Sekunden vergangen");DateTimeOffset – Datum mit Zeitzonenberücksichtigung
Für moderne Anwendungen, die mit Benutzern aus verschiedenen Regionen arbeiten, ist DateTimeOffset von entscheidender Bedeutung. Es speichert Datum und Uhrzeit zusammen mit der Abweichung von UTC:
// Aktuelle Uhrzeit mit lokaler AbweichungDateTimeOffset localOffset = DateTimeOffset.Now;// Uhrzeit mit bestimmter AbweichungDateTimeOffset customOffset = new DateTimeOffset(2025, 3, 15, 12, 0, 0, TimeSpan.FromHours(3));// Umwandlung in UTCDateTime utc = localOffset.UtcDateTime;Formatierung und Parsing von Daten
Die korrekte Anzeige von Daten für den Benutzer und das Lesen von Daten aus Zeichenfolgen sind unverzichtbare Fähigkeiten.
Formatierung: ToString() und benutzerdefinierte Muster
Die Methode ToString() akzeptiert eine Formatzeichenfolge. Die gängigsten Standardformate:
"d"– kurzes Datum (15.03.2025)"D"– vollständiges Datum (15. März 2025)"t"– kurze Uhrzeit (14:30)"T"– vollständige Uhrzeit (14:30:00)"g"– allgemeines Datums-/Uhrzeitformat (15.03.2025 14:30)
Beispiele für benutzerdefinierte Formatierung:
DateTime dt = new DateTime(2025, 3, 15, 14, 30, 45);Console.WriteLine(dt.ToString("yyyy-MM-dd")); // 2025-03-15Console.WriteLine(dt.ToString("dd.MM.yyyy HH:mm")); // 15.03.2025 14:30Console.WriteLine(dt.ToString("dddd, MMMM yyyy")); // Samstag, März 2025 (abhängig von der Kultur)Parsing: Umwandlung einer Zeichenfolge in ein Datum
Verwenden Sie für zuverlässiges Parsing DateTime.TryParse oder DateTime.ParseExact:
string dateString = "15.03.2025";if (DateTime.TryParse(dateString, out DateTime result)){ Console.WriteLine($"Erfolgreich: {result}");}else{ Console.WriteLine("Parsing-Fehler");}
// Exaktes Parsing mit Angabe des Formatsstring exactString = "2025-03-15 14:30:00";DateTime parsed = DateTime.ParseExact(exactString, "yyyy-MM-dd HH:mm