Je ne peux pas penser à un simple ou deux doublures qui obtiendraient le premier et le dernier jour des mois précédents.
Je suis en train de LINQ-ifying une application Web d'enquête, et ils ont inséré une nouvelle exigence.
L'enquête doit inclure toutes les demandes de service du mois précédent. Donc, si c'est le 15 avril, j'ai besoin de tous les identifiants de demande de Marches.
var RequestIds = (from r in rdc.request
where r.dteCreated >= LastMonthsFirstDate &&
r.dteCreated <= LastMonthsLastDate
select r.intRequestId);
Je ne peux pas penser facilement aux dates sans interrupteur. À moins que je ne sois aveugle et que je néglige une méthode interne pour le faire.
La façon dont j'ai fait cela dans le passé est d'abord d'obtenir le premier jour de ce mois
Puis soustrayez un jour pour obtenir la fin du mois dernier
Puis soustrayez un mois pour obtenir le premier jour du mois précédent
la source
return date.AddDays(-(date.Day-1))
par rapport àreturn new DateTime(date.Year, date.Month, 1);
et les performances des premières itérations sur 2000 sont meilleures (923 ms de nouveautés contre 809 ms retournant le même objet)en utilisant Fluent DateTime https://github.com/FluentDateTime/FluentDateTime
la source
la source
J'utilise ce simple one-liner:
Soyez conscient, qu'il retient le temps.
la source
Une approche utilisant des méthodes d'extension:
Voir ce lien http://www.codeplex.com/fluentdatetime pour quelques extensions DateTime inspirées.
la source
Le cas d'utilisation canonique dans le commerce électronique est la date d'expiration des cartes de crédit, MM / aa. Soustrayez une seconde au lieu d'un jour. Sinon, la carte apparaîtra expirée pendant tout le dernier jour du mois d'expiration.
la source
S'il y a une chance que vos datetimes ne soient pas des dates de calendrier strictes, vous devriez envisager d'utiliser des comparaisons d'exclusion de date de fin ... Cela vous évitera de manquer les demandes créées à la date du 31 janvier.
la source
la source
Voici une interprétation de la réponse de Mike W.
Vous pouvez l'appeler ainsi:
la source