Hi,

I am new to c#. Now i m currently working in a leave system project, in this i have two popup calendar to select the leave-start date and leave-end date for employee. If employee select more than 5 days, weekend dates should not be calculate as a leave credit. I m using the following code to find the difference.

``````DateTime dt = Convert.ToDateTime(txtfrmdate.SelectedDate.ToShortDateString());
DateTime dt1 = Convert.ToDateTime(txtenddate.SelectedDate.ToShortDateString());
TimeSpan diff = dt1.Subtract(dt);
int days = diff.Days + 1;``````

In this if we select dates 11/26/2009 to 12/2/2009, result will be 7. here the weekend dates also calculated. But i want to ignore the weekend days.

Please can any one help me how to do this.

Try this.

``````DateTime startDate = new DateTime( 2004 , 3 , 18 ) ;
DateTime endDate   = new DateTime( 2004 , 3 , 22 ) ;

int countDays = 0;

DateTime dateIterator = startDate ;

{
if( dateIterator.DayOfWeek != DayOfWeek.Saturday && dateIterator.DayOfWeek != DayOfWeek.Sunday )
countDays ++;

}

Console.Out.WriteLine( "Number of working days between {0} and {1}\nis {2} days" , startDate , endDate , countDays );

Here change the start date and end dates accordingly.

``````private int DaysIgnoreWeekends(DateTime dtst, DateTime dtend)
{
TimeSpan days = dtend.Subtract(dtst);
int count = 0;
for (int a = 0; a < days.Days + 1; a++)
{
if (dtst.DayOfWeek != DayOfWeek.Saturday && dtst.DayOfWeek != DayOfWeek.Sunday)
{
count++;
}
}
return count;
}``````

this is a little function

oops sorry about that i didn't notice that mr. ramesh post a really nice solution. anyway i think you have the point.

``````private int DaysIgnoreWeekends(DateTime dtst, DateTime dtend)
{
TimeSpan days = dtend.Subtract(dtst);
int count = 0;
for (int a = 0; a < days.Days + 1; a++)
{
if (dtst.DayOfWeek != DayOfWeek.Saturday && dtst.DayOfWeek != DayOfWeek.Sunday)
{
count++;
}