Obtenez le mois précédent premier et le dernier jour des dates en c#
Je ne peux pas penser à une facile un ou deux liner qui serait le mois précédent premier jour et le dernier jour.
Je suis LINQ-la ratification d'un sondage web app, et ils ont pressé une nouvelle exigence.
L'enquête doit inclure toutes les demandes de service pour le mois précédent. Donc, si c'est le 15 avril, j'ai besoin de tous les Marches de la demande de l'id.
var RequestIds = (from r in rdc.request
where r.dteCreated >= LastMonthsFirstDate &&
r.dteCreated <= LastMonthsLastDate
select r.intRequestId);
Je ne peux pas penser à des dates facilement sans un commutateur. Sauf si je suis aveugle, et donnant sur une méthode interne de le faire.
Vous devez vous connecter pour publier un commentaire.
En ligne si vous avez vraiment besoin d'une ou deux lignes.
La façon dont je l'ai fait dans le passé est d'abord que le premier jour de ce mois
Puis de soustraire un jour pour obtenir la fin du mois dernier
Puis de soustraire un mois pour obtenir le premier jour du mois précédent
return date.AddDays(-(date.Day-1))
contrereturn new DateTime(date.Year, date.Month, 1);
et la performance de la première plus de 2000 itérations est mieux (923ms newing up versus 809ms retour le même objet)à l'aide de Fluent DateTime https://github.com/FluentDateTime/FluentDateTime
- Je utiliser ce simple one-liner:
Être conscient, qu'il conserve le temps.
Une approche à l'aide des méthodes d'extension:
Voir ce lien
http://www.codeplex.com/fluentdatetime
pour certains inspiré DateTime extensions.
Canonique cas d'utilisation de l'e-commerce est la carte de crédit date d'expiration MM/aa. Soustraire une seconde au lieu d'une journée. Sinon, la carte apparaîtra expiré pour l'ensemble du dernier jour du mois d'expiration.
Si il n'y a aucune chance que votre datetimes ne sont pas strictes les dates du calendrier, vous devriez envisager d'utiliser enddate exclusion des comparaisons...
Cela vous évitera de passer à côté de toute les demandes créées au cours de la date du 31 Jan.
C'est une prise sur Mike W réponse:
Vous pouvez l'appeler comme ça: