Ich kann mir keinen einfachen Ein- oder Zwei-Liner vorstellen, der den ersten Tag und den letzten Tag der vergangenen Monate erreichen würde.
Ich bin LINQ-ifying eine Umfrage-Web-App, und sie drückten eine neue Anforderung in.
Die Umfrage muss alle Serviceanfragen des Vormonats enthalten. Wenn es also der 15. April ist, brauche ich alle Marches-Anforderungs-IDs.
var RequestIds = (from r in rdc.request
where r.dteCreated >= LastMonthsFirstDate &&
r.dteCreated <= LastMonthsLastDate
select r.intRequestId);
Ich kann mir die Daten ohne Wechsel einfach nicht vorstellen. Es sei denn, ich bin blind und übersehen eine interne Methode.
Die Art und Weise, wie ich das in der Vergangenheit gemacht habe, ist, zuerst den ersten Tag dieses Monats zu bekommen
Subtrahieren Sie dann einen Tag, um das Ende des letzten Monats zu erreichen
Subtrahieren Sie dann einen Monat, um den ersten Tag des Vormonats zu erhalten
quelle
return date.AddDays(-(date.Day-1))
Vergleichreturn new DateTime(date.Year, date.Month, 1);
und die Leistung der ersten über 2000 Iterationen ist besser (923ms Newing das gleiche Objekt im Vergleich zu 809ms bis Rückkehr)Verwenden von Fluent DateTime https://github.com/FluentDateTime/FluentDateTime
quelle
quelle
Ich benutze diesen einfachen Einzeiler:
Seien Sie sich bewusst, dass es die Zeit behält.
quelle
Ein Ansatz mit Erweiterungsmethoden:
Unter diesem Link http://www.codeplex.com/fluentdatetime finden Sie einige inspirierte DateTime-Erweiterungen.
quelle
Der kanonische Anwendungsfall im E-Commerce ist das Ablaufdatum der Kreditkarte (MM / JJ). Subtrahieren Sie eine Sekunde statt eines Tages. Andernfalls erscheint die Karte für den gesamten letzten Tag des Ablaufmonats abgelaufen.
quelle
Wenn die Möglichkeit besteht, dass Ihre Datumsangaben keine strengen Kalenderdaten sind, sollten Sie Enddatum-Ausschlussvergleiche in Betracht ziehen. Dadurch wird verhindert, dass Sie Anfragen verpassen, die am 31. Januar erstellt wurden.
quelle
quelle
Dies ist eine Interpretation der Antwort von Mike W:
Sie können es so nennen:
quelle