2013-03-12 4 views
1

C# Code pour calculer le nombre de jours entre deux dates ... J'ai une date de début dans une zone de texte et une date de fin dans une autre zone de texte et je dois obtenir non. de jours entre les deux dates et à afficher dans la troisième zone de texte et il devrait exclure les jours fériés et week-ends (samedi et dimanche).Code pour calculer le nombre de jours entre deux dates

+3

connexes http://stackoverflow.com/questions/1617049/calculate-the-number-of-business-days-between-two-dates –

+0

où se trouve la liste des vacances? –

+0

Voulez-vous utiliser un calendrier pour rechercher si un jour est un jour férié? Par exemple, dans un calendrier chrétien, le bon vendredi peut être une fête même si ce n'est pas un samedi ou un dimanche. –

Répondre

3

Vous pouvez analyser l'objet date-heure de la zone de texte, puis essayer quelque chose sur les lignes suivantes.

DateTime startDate = new DateTime(2013, 03, 01); 
DateTime endDate = DateTime.Today; // 12 March 2013 
int totalDays = 0; 
while (startDate <= endDate) 
{ 
    if (startDate.DayOfWeek == DayOfWeek.Saturday 
     || startDate.DayOfWeek == DayOfWeek.Sunday) 
    { 
     startDate = startDate.AddDays(1); 
     continue; 
    } 
    startDate = startDate.AddDays(1); 
    totalDays++; 
} 

Console.WriteLine("Total days excluding weekends: {0}", totalDays); 
+0

Si vous voulez compter tous les jours, y compris les week-ends, je ne voudrais pas utiliser cela. Cela ne doit être utilisé que lorsque vous ne souhaitez pas inclure les week-ends. – albertjan

+0

@albertjan, oui sinon la propriété 'TimeSpan.TotalDays' est suffisante pour calculer la différence entre deux dates. – Habib

+0

@albertjan, merci pour l'édition – Habib

2
var dateDiff = FirstDate - SecondDate; 
double totalDays = dateDiff.TotalDays; 
+0

cela n'exclut pas les week-ends – Habib

1

si vous avez deux dates textboxes à savoir textBox1 et textBox2

DateTime date1= new DateTime(); 
DateTime date2 = new DateTime(); 
double days; 

bool isDate1Valid =DateTime.TryParse(textBox1.Text, out date1); 
bool isDate2Valid =DateTime.TryParse(textBox2.Text, out date2); 

if(isDate1Valid && isDate2Valid) 
days = (date1-date2).TotalDays; 

Modifier

Si vous avez besoin de le faire sans boucle, Here is how to do it..

Si la différence de date est trop importante, le bouclage peut prendre un certain temps.

+1

'il devrait exclure les jours fériés et week-ends (samedi et dimanche).» C'est la question. TotalDays n'exclut pas que – Habib

+0

@Habib: Oh oui vous avez raison .. (La hâte fait des déchets) – Marshal

1

Try this ..

DateTime startdate = DateTime.Parse("somedate"); 
    DateTime enddate = DateTime.Parse("somedate"); 
    int daycount = 0; 
    while (startdate < enddate) 
    { 
     startdate = startdate.AddDays(1); // Fixed 
     int DayNumInWeek = (int)startdate.DayOfWeek; 
     if (DayNumInWeek != 0) 
     { 
      if (DayNumInWeek != 6) 
      { daycount += 1; } 
     } 
    } 
Questions connexes