C# abfragen, ob Datum abgelaufen ist?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Das würde ungefähr so gehen: 

bool aktiv = true;


            DateTime date1 = DateTime.Now;
            DateTime date2 = new DateTime(2022, 4, 15, 12, 0, 0);
            int result = DateTime.Compare(date1, date2);


            if(result == 0 || result == 1)
            {
                aktiv = false;
                Console.WriteLine("Etwas ist schiefgelaufen!");
                Console.ReadKey();
            }


            if (aktiv == true)
            {
                //Code
            }

     

Das Format für das Datum ist so: Jahr / Monat / Tag / Stunde.

"result" kann hier "-1"(vergangen), "0"(genau diese Zeit) oder "1"(später) sein. 

Woher ich das weiß:eigene Erfahrung

SnowInApril 
Fragesteller
 04.03.2022, 18:02

Perfekt, danke 🙏

1
var date1 = DateTimeOffset.Now.AddDays(1);
var date2 = DateTimeOffset.Now;
var result = date1 >= date2; // true

Du kannst mit DateTime(Offset) ungefähr genauso rechnen, wie mit Zahlen, also auch größer, kleiner, gleich, minus, plus, etc.
Und gewöhn dir DateTime ab, ist 'ne Altlast, DateTimeOffset ist der Nachfolger und sicherer.

Woher ich das weiß:Berufserfahrung

LUCKY1ONE  04.03.2022, 18:24

Uh, cool. Wusste ich bisher noch nicht. Aber inwiefern sicherer?

0
Palladin007  04.03.2022, 18:29
@LUCKY1ONE

DateTimeOffset ist UTC und weltweit zuverlässig.
Das geht auch mit DateTime, man muss aber aktiv daran denken, man kann es also auch vergessen.

Wenn nur die lokale Zeit relevant ist, stört das nicht, aber umgekehrt hat man keinen Nachteil, wenn man nur DateTimeOffset nutzt und man kann es nicht vergessen, wenn man es doch braucht.

PS:
Und guck dir Operator-Überladung an.
Das macht es möglich, mit den üblichen Operatoren zu rechnen.
Das funktioniert übrigens auch mit TimeSpan.

3