2024年3月15日发(作者:)

一、计算逻辑:

1.初始化某一年中的所有周六和周日,比如初始化2008年的所有周六、周日,存入表

ConfigDate中;

2.添加周六、周日外的其它节假日,比如国庆节、五一节、元旦等至表ConfigDate中;

3.查询某年某月中的所有节假日,并能对某一节假日进行设置其有效性,比如我某个周六加

班,则设置该周六假日无效,实际上该天当计算的时候也是工作日;

4.当输入开始日期和结束日期后,把开始日期至结束日期的每一天与ConfigDate表中所有有

效节假日进行对比,如果没有找到则工作日总数加1;

二、计算工作日总数的操作类

using System;

using ;

using uration;

using ;

using ty;

using ;

using ntrols;

using trols;

using ts;

namespace

{

///

/// 计算开始日期到结束日期内的工作日

/// 2008-09-19

///

public class CalculateWorkDay

{

#region 构造函数

public CalculateWorkDay()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

#endregion

#region 计算工作日天数

public static int CalculateWorkDays(DateTime BeginDate, DateTime EndDate)

{

string sql = "select * from ConfigDate where state='1'";

DataTable dt = new DataTable();//dt为所有有效的休息节假日数据源

dt =

ker("Yyjcpt").eDataTable(sql);

int workdays = 0;//返回值,即EndDate和BeginDate之间的工作日数

an tsDiffer = - ;//计算EndDate和

BeginDate之间相差多少天

int intDiffer = + 1;//相差天数的int值

for (int i = 0; i < intDiffer; i++)//从BeginDate开始一天天加,判断临时的日期值是

不是节假日,如果不是节假日,则该天为工作日,workdays加1

{

DateTime TempDate = s(i);

if ( > 0)

{

for (int j = 0; j < ; j++)

{

if ( ==

Time([j]["RestDate"].ToString()).Date)

{

break;

}

if ( !=

Time([j]["RestDate"].ToString()).Date && j == - 1)

{

workdays++;

}

}

}

else

{

workdays++;

}

}

return workdays;

}

#endregion

#region 调用示例及说明

//DateTime begindate = Time(());

//DateTime enddate =

Time(());

//int workdays = ateWorkDays(begindate,enddate);

// = ng();

#endregion

}