Existe-t-il un meilleur moyen .net de vérifier si un DateTime s'est produit «aujourd'hui», puis le code ci-dessous?
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
}
Réponses:
Devrait faire l'affaire.
la source
la source
Essayer
la source
Ma solution:
la source
Si NewsStory utilisait également un DateTime, comparez simplement la propriété Date et vous avez terminé.
Cependant, cela dépend de ce que signifie réellement «aujourd'hui». Si quelque chose est posté peu de temps avant minuit, il sera "ancien" après une courte période. Alors peut-être qu'il serait préférable de conserver la date exacte de l'histoire (y compris l'heure, de préférence UTC) et de vérifier si moins de 24 heures (ou autre) se sont écoulées, ce qui est simple (les dates peuvent être soustraites, ce qui vous donne un TimeSpan avec un TotalHours ou propriété TotalDays).
la source
Vous pouvez implémenter une méthode d'extension DateTime.
Créez une nouvelle classe pour vos méthodes d'extension:
Et maintenant, partout dans votre code, où voulez-vous effectuer ce test, vous devez inclure l'utilisation:
Et puis, utilisez la méthode d'extension:
la source
Date
car ilTimeSpan
sera toujours 00:00:00.FYI,
newsStory.Date == DateTime.Today
renverra le même résultat de comparaison que le codage
newsStory == DateTime.Today
où
newsStory
est unDateTime
objet.NET est suffisamment intelligent pour déterminer que vous souhaitez comparer en fonction de la date uniquement et l'utilise pour la comparaison interne. Je ne sais pas pourquoi et j'ai du mal à trouver de la documentation sur ce comportement.
la source
Comme Guillame l'a suggéré dans un commentaire , comparez les valeurs des
Date
propriétés:la source
Essaye ça:
la source
Eh bien, DateTime a une propriété "Date" et vous pouvez simplement comparer en fonction de cela. Mais en regardant la documentation, il semble que l'obtention de cette propriété instancie en fait une nouvelle date / heure avec le composant d'heure réglé sur minuit, donc cela peut très bien être plus lent que d'accéder à chaque composant individuel, bien que beaucoup plus propre et plus lisible.
la source
if (newsStory.ToShortDateString() == DateTime.Today.ToShortDateString()) return "Todtay";
la source
Que diriez-vous
Mais cela reviendra également vrai pour le 1er janvier 2008 et le 1er janvier 2009, ce qui peut être ou non ce que vous voulez.
la source
tu pourrais utiliser
DateTime.Now.DayOfYear
la source