2017-10-15 5 views
0

Je voulais savoir si deux DateTime sont dans une semaine. L'un d'eux est le système actuel Datetime, que je l'ai obtenu en utilisant:Déterminer si les deux DateTime sont dans une semaine

DateTime CurrentDateTime = new DateTime(); 
CurrentDateTime = DateTime.Now; 

L'autre DateTime sera juste une date sélectionnée. En supposant qu'il est stocké dans une variable appelée: ExportDate.

Alors, je peux trouver la différence entre eux en faisant

ExportDate.Subtract(CurrentDateTime) 

Mais je ne peux pas changer cette valeur en un int pour comparer ... Alors, comment dois-je comparer à DateTime pour voir si cela deux les dates sont plus grandes que 0Days, et moins de 7Days.

+0

OT vous laisser l'ordinateur faire trop de travail: d'abord assinging 'new DateTime()' puis immédiatement 'écraser DateTime.Now'. Passer la première affectation et/ou combiner les deux lignes. –

+0

Voulez-vous "dans les 7 jours" ou "dans la même semaine"? A titre d'exemple: "Thusday" et "next lundi" seraient-ils un match? –

Répondre

0

Vous pouvez utiliser

(ExportDate - CurrentDateTime).TotalDays <= 7 
1

Soustraire deux datetimes vous donne un TimeSpan. Cette classe est fournie avec une propriété appelée TotalDays.

Obtient la valeur de la structure TimeSpan actuelle exprimée en jours entiers et fractionnaires.

Src: https://msdn.microsoft.com/en-Us/library/system.timespan(v=vs.110).aspx

Vous pouvez utiliser pour compter le nombre de jours, je suppose.

Cordialement, Seb

1

Essayez de comparer les TotalDays du TimeSpan résultant. Selon ce qui est plus tard, le résultat doit être comprise entre -7 et 7. Utilisez Math.Abs pour éviter de comparer la valeur contre les deux bornes:

bool isWithinWeek = Math.Abs(ExportDate - CurrentDate).TotalDays) < 7 

Si le moment de la journée est hors de propos, de ne comparer que les dates:

bool isWithinWeek = Math.Abs(ExportDate.Date - CurrentDate.Date).TotalDays) < 7 
0

Vous pouvez simplement utiliser la propriété DayOfYear de DateTime pour obtenir le jour dans l'année et ensuite vérifier si la différence est inférieure à 7 ou non. Vous pouvez essayer:

bool isWithinAWeek = Math.Abs(currentDateTime.DayOfYear-exportDate.DayOfYear)>7?false:true;