Gibt es eine bessere .net-Methode, um zu überprüfen, ob "DateTime" "heute" aufgetreten ist, als den folgenden Code?
if ( newsStory.WhenAdded.Day == DateTime.Now.Day &&
newsStory.WhenAdded.Month == DateTime.Now.Month &&
newsStory.WhenAdded.Year == DateTime.Now.Year )
{
// Story happened today
}
else
{
// Story didn't happen today
}
Antworten:
Sollte den Trick machen.
quelle
quelle
Versuchen
quelle
Meine Lösung:
quelle
Wenn NewsStory auch eine DateTime verwendet hat, vergleichen Sie einfach die Date-Eigenschaft, und fertig.
Dies hängt jedoch davon ab, was "heute" tatsächlich bedeutet. Wenn etwas kurz vor Mitternacht veröffentlicht wird, ist es nach kurzer Zeit "alt". Vielleicht ist es am besten, das genaue Datum der Story (einschließlich der Uhrzeit, vorzugsweise UTC) beizubehalten und zu überprüfen, ob weniger als 24 Stunden (oder was auch immer) vergangen sind. Dies ist einfach (Daten können abgezogen werden, wodurch Sie eine Zeitspanne mit Gesamtstunden erhalten oder TotalDays-Eigenschaft).
quelle
Sie können eine DateTime-Erweiterungsmethode implementieren.
Erstellen Sie eine neue Klasse für Ihre Erweiterungsmethoden:
Und jetzt, überall in Ihrem Code, wo Sie diesen Test durchführen möchten, sollten Sie Folgendes verwenden:
Verwenden Sie dann die Erweiterungsmethode:
quelle
Date
, da esTimeSpan
immer 00:00:00 sein wird.Zu Ihrer Information,
newsStory.Date == DateTime.Today
gibt das gleiche Vergleichsergebnis wie die Codierung zurück
newsStory == DateTime.Today
Wo
newsStory
ist einDateTime
Objekt?.NET ist intelligent genug, um zu bestimmen, dass Sie nur anhand des Datums vergleichen möchten, und verwendet dieses für den internen Vergleich. Ich weiß nicht warum und habe tatsächlich Probleme, Dokumentation für dieses Verhalten zu finden.
quelle
Vergleichen Sie die Werte der Eigenschaften, wie Guillame in einem Kommentar vorgeschlagen hat
Date
:quelle
Versuche dies:
quelle
Nun, DateTime hat eine "Date" -Eigenschaft und Sie können sie einfach anhand dieser vergleichen. Wenn Sie sich jedoch die Dokumente ansehen, scheint es, dass das Abrufen dieser Eigenschaft tatsächlich eine neue Datums- / Uhrzeitangabe mit der auf Mitternacht eingestellten Zeitkomponente instanziiert. Daher ist sie möglicherweise langsamer als der Zugriff auf jede einzelne Komponente, obwohl sie viel sauberer und lesbarer ist.
quelle
if (newsStory.ToShortDateString() == DateTime.Today.ToShortDateString()) return "Todtay";
quelle
Wie wäre es mit
Dies gilt jedoch auch für den 1. Januar 2008 und den 1. Januar 2009, die möglicherweise Ihren Wünschen entsprechen oder nicht.
quelle
Du könntest benutzen
DateTime.Now.DayOfYear
quelle