Ich habe zwei DateTime
Objekte: StartDate
und EndDate
. Ich möchte sicherstellen, dass StartDate
vor EndDate
ist. Wie wird das in C# gemacht?Wie überprüft man, ob eine DateTime später ist als eine andere in C#
Antwort
if (StartDate < EndDate)
// code
, wenn Sie nur die Daten wollen, und nicht die Zeit
if (StartDate.Date < EndDate.Date)
// code
if(StartDate < EndDate)
{}
DateTime unterstützt normale Vergleichsoperatoren.
if(dateTimeA > dateTimeB) Console.WriteLine("Do your own homework");
Check out DateTime.Compare Methode
StartDate < EndDate
können Sie verwenden, um die überlasteten < oder> Betreiber .
Zum Beispiel:
DateTime d1 = new DateTime(2008, 1, 1);
DateTime d2 = new DateTime(2008, 1, 2);
if (d1 < d2) { ...
Wow, extremes Grabgraben. – recursive
Viel stärker jetzt :) –
if (StartDate>=EndDate)
{
throw new InvalidOperationException("Ack! StartDate is not before EndDate!");
}
if (new DateTime(5000) > new DateTime(1000))
{
Console.WriteLine("i win");
}
hatte ich die gleiche Forderung, aber wenn die akzeptierte Antwort mit, sie habe nicht alle meine Unit-Tests erfüllen. Das Problem für mich ist, wenn Sie ein neues Objekt mit Start- und Enddatum haben und Sie das Startdatum festlegen müssen (zu diesem Zeitpunkt hat Ihr Enddatum den Mindestdatumswert von 01/01/0001) - diese Lösung hat alle bestanden meine Unit-Tests:
public DateTime Start
{
get { return _start; }
set
{
if (_end.Equals(DateTime.MinValue))
{
_start = value;
}
else if (value.Date < _end.Date)
{
_start = value;
}
else
{
throw new ArgumentException("Start date must be before the End date.");
}
}
}
public DateTime End
{
get { return _end; }
set
{
if (_start.Equals(DateTime.MinValue))
{
_end = value;
}
else if (value.Date > _start.Date)
{
_end = value;
}
else
{
throw new ArgumentException("End date must be after the Start date.");
}
}
}
er den Rand Fall nicht entgehen lassen, wo beide Start- und Enddaten 01.01.0001 sein können, aber ich bin darüber nicht besorgt.
Dies ist wahrscheinlich zu spät ist, aber auch andere Menschen zugute kommen, die auf diesem stolpern könnten, hat er eine zusätzliche Methode, so zu diesen mit IComparable
zu tun:
public static class BetweenExtension
{
public static bool IsBetween<T>(this T value, T min, T max) where T : IComparable
{
return (min.CompareTo(value) <= 0) && (value.CompareTo(max) <= 0);
}
}
mit IComparable
diese Erweiterung Methode macht diese Methode generischer und macht es mit einer Vielzahl von Datentypen und nicht nur mit Daten verwendbar.
Sie würde es so verwenden:
DateTime start = new DateTime(2015,1,1);
DateTime end = new DateTime(2015,12,31);
DateTime now = new DateTime(2015,8,20);
if(now.IsBetween(start, end))
{
//Your code here
}
Ich möchte, dass zeigen, wenn Sie konvertieren .Date, dass Sie kümmern müssen nicht über Stunden/Minuten/Sekunden etc:
[Test]
public void ConvertToDateWillHaveTwoDatesEqual()
{
DateTime d1 = new DateTime(2008, 1, 1);
DateTime d2 = new DateTime(2008, 1, 2);
Assert.IsTrue(d1 < d2);
DateTime d3 = new DateTime(2008, 1, 1,7,0,0);
DateTime d4 = new DateTime(2008, 1, 1,10,0,0);
Assert.IsTrue(d3 < d4);
Assert.IsFalse(d3.Date < d4.Date);
}
- 1. Wie überprüft man, ob es Null ist Datetime in C#
- 2. Wie überprüft man, ob eine Zeichenfolge in Haskell kleiner ist als eine andere?
- 3. Objective-C wie überprüft man, ob eine Zeichenkette null ist
- 4. Wie überprüft man, ob eine C++ Klasse eine andere erweitert (wie wenn die andere eine Schnittstelle wäre)?
- 5. Wie überprüft man eine hochgeladene Datei, ob es ein Bild oder eine andere Datei ist?
- 6. Wie überprüft man, ob eine Datei komprimiert ist in R
- 7. Wie überprüft man, ob eine Liste in Python leer ist?
- 8. Wie überprüft man, ob eine Datumszelle in Excel leer ist?
- 9. Wie überprüft man, ob eine Variable in JavaScript geladen ist?
- 10. Wie überprüft man, ob eine Datei in Bash leer ist?
- 11. Wie überprüft man, ob eine Variable in Python leer ist?
- 12. Wie überprüft man, ob eine Karte in Golang leer ist?
- 13. Wie überprüft man, ob eine Verbindung SSL ist?
- 14. Wie überprüft man, ob eine Struktur initialisiert ist?
- 15. Wie überprüft man, ob mindestens eine Eingabe abgeschlossen ist?
- 16. Wie überprüft man, ob eine Klasse existiert
- 17. Wie überprüft man, ob eine dreistellige Zahl ein Palindrom ist?
- 18. Wie überprüft man, ob eine generierte Zip-Datei beschädigt ist?
- 19. Wie überprüft man, ob ein Objekt serialisierbar ist in C#
- 20. Wie überprüft man, ob eine Datei UTF-8 ist?
- 21. Wie überprüft man, ob eine Eigenschaft virtuell mit Reflektion ist?
- 22. Wie überprüft man, ob eine Variable nicht null ist?
- 23. Wie überprüft man, ob eine Sitzung ungültig ist
- 24. Wie überprüft man, ob eine Datei gesperrt ist oder nicht?
- 25. Wie überprüft man, ob eine Datei ein gültiges Bild ist?
- 26. Wie überprüft man, ob eine Domain punycode ist oder nicht?
- 27. Wie überprüft man, ob eine Option ausgewählt ist?
- 28. Wie überprüft man, ob eine Nummer ein Palindrom ist?
- 29. Python, wie überprüft man, ob eine Ergebnismenge leer ist?
- 30. Wie überprüft man, ob eine Assoziation nicht geladen ist?
Werden die Antworten nicht sofort angezeigt? Weil ich die Seite aktualisiert habe, um sicherzustellen, dass niemand anders geantwortet hat. Aber nachdem ich meine Antwort eingegeben habe, bam 7 andere. –
@toast, ich denke, dass acht Leute ungefähr zur selben Zeit antworteten. –