Wird geladen...

DateTime- und TimeSpan-Operationen in C#

Lernen Sie die Arbeit mit DateTime und TimeSpan in C#, um Datums- und Zeitoperationen wie Vergleiche, Berechnungen und Formatierung durchzuführen.

In C# werden die Strukturen DateTime und TimeSpan für die Arbeit mit Datum und Uhrzeit verwendet. DateTime repräsentiert einen bestimmten Zeitpunkt, während TimeSpan den Unterschied zwischen zwei Daten, also ein Zeitintervall, darstellt. Mit diesen Strukturen lassen sich leicht Operationen wie Datumsvergleiche, Addition/Subtraktion und Formatierungen durchführen.


Was ist DateTime?

Die DateTime-Struktur repräsentiert ein bestimmtes Datum und eine bestimmte Uhrzeit.


DateTime jetzt = DateTime.Now;
Console.WriteLine(jetzt);            // Aktuelles Datum und Uhrzeit
Console.WriteLine(DateTime.UtcNow);  // Weltzeit

Grundlegende Eigenschaften von DateTime

Es ist möglich, einzelne Datums- und Zeitangaben zu extrahieren:


DateTime datum = new DateTime(2025, 9, 9, 14, 30, 0);

Console.WriteLine(datum.Year);   // 2025
Console.WriteLine(datum.Month);  // 9
Console.WriteLine(datum.Day);    // 9
Console.WriteLine(datum.Hour);   // 14
Console.WriteLine(datum.Minute); // 30

Console.WriteLine(datum.ToShortDateString()); // 09.09.2025
Console.WriteLine(datum.ToLongDateString());  // Dienstag, 9. September 2025

Arbeiten mit DateTime

Mit den Add-Methoden können Tage, Monate oder Jahre hinzugefügt oder abgezogen werden.


DateTime heute = DateTime.Now;

Console.WriteLine(heute.AddDays(5));    // 5 Tage später
Console.WriteLine(heute.AddMonths(-1)); // 1 Monat früher

DateTime zukunft = heute.AddYears(1);
Console.WriteLine(zukunft); // 1 Jahr später

// Unterschied zwischen zwei Daten
DateTime geburt = new DateTime(2000, 1, 1);
TimeSpan differenz = heute - geburt;

Console.WriteLine($"Gesamte Tage: {differenz.Days}");

Was ist TimeSpan?

TimeSpan repräsentiert ein Zeitintervall.


TimeSpan dauer = new TimeSpan(2, 30, 0); // 2 Stunden 30 Minuten
Console.WriteLine(dauer.TotalMinutes);   // 150 Minuten

DateTime und TimeSpan zusammen verwenden

Man kann einem DateTime ein TimeSpan hinzufügen, um ein neues Datum zu erstellen.


DateTime jetzt = DateTime.Now;
TimeSpan dreiStunden = new TimeSpan(3, 0, 0);

DateTime neuesDatum = jetzt + dreiStunden;
Console.WriteLine(neuesDatum);

Datumsvergleich

Daten können mit >, <, == oder der Methode Compare verglichen werden.


DateTime d1 = new DateTime(2025, 1, 1);
DateTime d2 = new DateTime(2025, 12, 31);

Console.WriteLine(d1 < d2); // true
Console.WriteLine(DateTime.Compare(d1, d2)); // -1 (d1 ist früher)

Überprüfen, ob ein Datum in einem bestimmten Jahr oder Monat liegt:


DateTime datum = new DateTime(2025, 9, 9);

bool gleichesJahr = (datum.Year == 2025);  // true
bool gleicherMonat = (datum.Month == 9);   // true

Datumsformatierung

Mit der Methode ToString können benutzerdefinierte Formate angewendet werden.


DateTime jetzt = DateTime.Now;

Console.WriteLine(jetzt.ToString("dd.MM.yyyy"));       // 09.09.2025
Console.WriteLine(jetzt.ToString("dd.MM.yy"));         // 09.09.25
Console.WriteLine(jetzt.ToString("yyyy-MM-dd HH:mm")); // 2025-09-09 14:45

Beispielanwendung: Projektdauer und tägliche Rate berechnen


Console.Write("Bitte geben Sie das Projektstartdatum ein (yyyy-MM-dd): ");
DateTime start = DateTime.Parse(Console.ReadLine());

Console.Write("Bitte geben Sie das Projektendedatum ein (yyyy-MM-dd): ");
DateTime ende = DateTime.Parse(Console.ReadLine());

if (ende <= start)
{
    Console.WriteLine("Fehler: Das Enddatum muss nach dem Startdatum liegen.");
}
else
{
    Console.Write("Bitte geben Sie den Gesamtpreis des Projekts ein: ");
    decimal preis = decimal.Parse(Console.ReadLine());

    TimeSpan dauer = ende - start;
    int tage = dauer.Days;

    decimal tagessatz = preis / tage;

    Console.WriteLine($"Projektdauer: {tage} Tage");
    Console.WriteLine($"Tagessatz: {tagessatz:0.00} EUR");
}

TL;DR

  • DateTime repräsentiert einen Zeitpunkt, TimeSpan repräsentiert ein Zeitintervall.
  • Mit Now und UtcNow kann die aktuelle Zeit abgerufen werden.
  • Mit AddDays, AddMonths und AddYears können Datumsberechnungen durchgeführt werden.
  • Die Differenz zwischen zwei Daten wird durch ein TimeSpan dargestellt.
  • Datumsvergleiche können mit >, <, == oder Compare durchgeführt werden.
  • Mit ToString können Daten in benutzerdefinierten Formaten angezeigt werden.