To count days between two dates except Saturday and Sunday use the below C# code
- public int CountDays(fromDate,toDate)
- {
- int noOfDays = 0;
- DateTime fDate = Convert.ToDateTime(fromDate);
- DateTime tDate = Convert.ToDateTime(toDate);
- while (DateTime.Compare(fDate, tDate) <= 0)
- {
- if (fDate.DayOfWeek != DayOfWeek.Saturday && fDate.DayOfWeek != DayOfWeek.Sunday)
- {
- noOfDays += 1;
- }
- fDate = fDate.AddDays(1);
- }
- return noOfDays;
- }
While this code works, it can be pretty slow since it is using a loop - especially if dealing with a large difference between dates or if running it against a large data set. The code below performs the same function but in a fraction of the time:
ReplyDeletepublic static int GetBusinessDays(DateTime startD, DateTime endD)
{
double calcBusinessDays =
1 + ((endD - startD).TotalDays * 5 -
(startD.DayOfWeek - endD.DayOfWeek) * 2) / 7;
if ((int)endD.DayOfWeek == 6) calcBusinessDays--;
if ((int)startD.DayOfWeek == 0) calcBusinessDays--;
return Convert.ToInt32(calcBusinessDays);
}
Thanks for the info David.
Delete