2009-12-23 12 views
-3

comment trouver si le dimanche se situe entre deux dates.if dimanche existe Soustraire un jour de la différence entre deux jourschèque dimanche tombe entre deux dates

+2

Pouvez-vous être un peu plus précis. Quel dimanche, quelles dates? –

+2

@Ranjana: Vous avez posé 12 questions, accepté aucune des réponses et jamais voté sur quoi que ce soit. L'accord ici est: Vous obtenez des réponses, l'utilisateur (s) fournissant la réponse (s) obtenir la réputation .. s'il vous plaît faire votre part. Je vous remercie! – lexu

+1

-1 posez-vous une question ou donnez-vous une sorte de mission? – PRR

Répondre

1

Si je comprends bien, vous cherchez quelque chose comme ceci:

public static bool DoesIncludeSunday(DateTime startDate, DateTime endDate) 
{ 
    bool r = false; 
    TimeSpan testSpan = new TimeSpan(6, 0, 0, 0); 
    TimeSpan actualSpan =endDate - startDate; 

    if (actualSpan >= testSpan) { r = true; } 
    else 
    { 
     DateTime checkDate = endDate; 
     while (checkDate > startDate) 
     { 
      r = (checkDate.DayOfWeek == DayOfWeek.Sunday); 
      if(r) { break; } 
      checkDate = checkDate.AddDays(-1); 
     } 
    } 

    return r; 
} 

endDate doit être la date la plus récente. La première partie nous empêche simplement de vérifier si les dates de début et de fin sont à plus de 6 jours d'intervalle (cela comprendra un dimanche, donc pas besoin de continuer). Le deuxième bit recule un jour à la fois depuis la fin de la journée pour vérifier si le dimanche est là. Une fois que vous savez si le dimanche fait partie de la plage, vous pouvez apporter les modifications souhaitées aux dates souhaitées dans le code d'appel.

0

Juste parce que je veux être intelligent, je l'ai écrit de cette façon:

public static int DaysExcludingSundays(DateTime start, DateTime end) 
{ 
return ((end - start).Days + 1) - ((((end - start).Days + 1) + (((int)start.DayOfWeek + 6) % 7))/7); 
} 

Ne hésitez pas à copier et coller ce code sans comprendre ce que cela signifie. J'ai aimé le puzzle.

dégradables:

int startOffset = ((int) start.DayOfWeek + 6) % 7; 
int totalInclusiveDays = (end - start).Days + 1; 
int numberOfSundays = (totalInclusiveDays + startOffset)/7; 
int numberOfDaysWithoutSundays = totalInclusiveDays - numberOfSundays; 
Questions connexes