using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Test_times : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DateTime start_date = Convert.ToDateTime("2006-08-18");
DateTime end_date = Convert.ToDateTime("2007-11-30");
DateTime start_holidy = Convert.ToDateTime("2006-08-22");
DateTime end_holidy = Convert.ToDateTime("2006-08-24");
int intDisp = this.DifferDate(start_date, end_date, start_holidy, end_holidy);
Response.Write(intDisp + "<br>");
}
/**/
/// <summary>
/// 计算两个日期之间的工作日数,(星期6,星期天,不算工作日)dt1和dt2之间相隔多少工作日,其中dt3-dt4的时间为公休日。
/// </summary>
/// <param name="start_date">要计算的起始时间</param>
/// <param name="end_date">要计算的结束时间</param>
/// <param name="start_holidy">公休起始时间</param>
/// <param name="end_holidy">公休结束时间</param>
/// <returns>workDays</returns>
private int DifferDate(DateTime start_date, DateTime end_date, DateTime start_holidy, DateTime end_holidy)
{
int workDays = 0;//返回值,即end_date和start_date之间的工作日数
System.TimeSpan tsDiffer = end_date.Date - start_date.Date;//计算end_date和start_date之间相差多少天
int intDiffer = tsDiffer.Days;//相差天数的int值
for (int i = 0; i < intDiffer; i++)//从start_date开始一天天加,判断临时的日期值是不是星期六或星期天,如果既不是星期六,也不是星期天,而且也不在start_holidy和end_holidy之间,则该天为工作日,workDays加1
{
DateTime dtTemp = start_date.Date.AddDays(i);
if ((dtTemp.DayOfWeek != System.DayOfWeek.Sunday) && (dtTemp.DayOfWeek != System.DayOfWeek.Saturday))
{
if ((dtTemp.Date < start_holidy.Date) || (dtTemp.Date > end_holidy.Date))
{
workDays++;
}
}
}
return workDays;
}
}