So berechnen Sie die Differenz zwischen Daten in C#: Anzahl der Tage

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

Wie viele Tage sind vergangen? Lösen wir die ewige Aufgabe in C#

\n\n

Stellen Sie sich vor: Sie schreiben eine Anwendung zur Urlaubsverwaltung, einen Aufgabenplaner oder möchten einfach wissen, wie viele Tage bis zum neuen Jahr verbleiben. Und dann stellt sich die klassische Frage: „Wie berechnet man die Differenz zwischen zwei Daten in C#?“. Diese Anfrage ist eine der beliebtesten auf Stack Overflow, und das aus gutem Grund. Die Arbeit mit Daten ist eine Grundlage, die jeder Entwickler kennen muss.

\n\n

In diesem Artikel geben wir nicht nur eine trockene Antwort. Wir erklären alles anhand von lebendigen Beispielen, zeigen Fallstricke auf und bringen Ihnen bei, die Anzahl der Tage (und nicht nur) zwischen zwei beliebigen Zeitpunkten zu ermitteln. Los geht‘s!

\n\n

Der einfachste Weg: Ein Datum vom anderen subtrahieren

\n\n

In C# gibt es für die Arbeit mit Daten und Zeiten die leistungsstarke Struktur DateTime. Das Hauptgeheimnis ist, dass Sie beim Subtrahieren eines DateTime-Objekts von einem anderen keine Zahl, sondern ein spezielles Objekt erhalten – TimeSpan. Dieses speichert die Differenz.

\n\n

Basisbeispiel: Differenz in Tagen zwischen zwei konkreten Daten

\n\n

Angenommen, Sie möchten wissen, wie viele Tage zwischen dem 1. März 2024 und dem 10. Mai 2024 vergangen sind.

\n\n
using System;\n\nclass Program\n{\n    static void Main()\n    {\n        // Zwei Daten erstellen\n        DateTime startDate = new DateTime(2024, 3, 1);\n        DateTime endDate = new DateTime(2024, 5, 10);\n\n        // Differenz berechnen\n        TimeSpan difference = endDate - startDate;\n\n        // Anzahl der ganzen Tage ermitteln\n        int days = difference.Days;\n\n        Console.WriteLine($"Differenz in Tagen: {days}");\n        // Ausgabe: Differenz in Tagen: 70\n    }\n}\n
\n\n

Ganz einfach, nicht wahr? Der Operator - ist für DateTime überladen und gibt TimeSpan zurück. Die Eigenschaft .Days gibt die ganze Anzahl der Tage zurück (ohne Stunden, Minuten und Sekunden).

\n\n

Differenz mit „heute“ berechnen

\n\n

Oft muss man berechnen, wie viele Tage von einem Ereignis bis zum aktuellen Zeitpunkt vergangen sind. Dafür verwenden wir DateTime.Now oder DateTime.Today.

\n\n
DateTime today = DateTime.Today; // Nur Datum, Uhrzeit 00:00\nDateTime someDay = new DateTime(2025, 1, 1); // 1. Januar 2025\n\nTimeSpan diff = someDay - today;\n\nConsole.WriteLine($"Bis zum neuen Jahr verbleiben: {diff.Days} Tage");\n
\n\n

Beachten Sie: DateTime.Today gibt das aktuelle Datum mit der auf 00:00:00 gesetzten Uhrzeit zurück. Dies ist praktisch, wenn Stunden und Minuten für Sie nicht wichtig sind.

\n\n

Und wenn mehr als nur Tage benötigt werden?

\n\n

Die Struktur TimeSpan besteht nicht nur aus .Days. Sie hat auch andere nützliche Eigenschaften, die nützlich sind, wenn Sie die Funktionalität erweitern möchten.

\n\n
    \n
  • .Days – Anzahl der ganzen Tage.
  • \n
  • .Hours – Stunden (von 0 bis 23).
  • \n
  • .Minutes – Minuten.
  • \n
  • .Seconds – Sekunden.
  • \n
  • .TotalDays – Gesamtanzahl der Tage als Dezimalzahl (z. B. 70.5).
  • \n
  • .TotalHours – Gesamtanzahl der Stunden.
  • \n
\n\n

Beispiel mit TotalDays

\n\n

Stellen Sie sich vor, die Differenz zwischen den Daten beträgt genau 36 Stunden. Die Eigenschaft .Days zeigt 1 (weil es ein ganzer Tag und 12 Stunden sind). .TotalDays zeigt hingegen 1.5.

\n\n
DateTime start = new DateTime(2024, 1, 1, 0, 0, 0);\nDateTime end = new DateTime(2024, 1, 2, 12, 0, 0); // 1. Januar + 1 Tag und 12 Stunden\n\nTimeSpan span = end - start;\n\nConsole.WriteLine($"Tage (ganze): {span.Days}");       // 1\nConsole.WriteLine($"Gesamt Tage: {span.TotalDays}");    // 1.5\n
\n\n

Wenn Ihre Aufgabe nur darin besteht, die Anzahl der vollen Tage zu ermitteln, verwenden Sie .Days. Wenn Sie einen genauen Wert mit Bruchteilen benötigen, nehmen Sie

Blogs

Buchempfehlungen