计算工作日期功能(含法定日期)

计算工作日期功能(含法定日期)

.Net 实例

以下代码为百度知道搜索回答原文,为方便大家查阅将作一些解释并提供更优方法。

后端代码

private void button1_Click(object sender, EventArgs e)
{
    //定义时间为2013-5-6的格式
    DateTime dt = new DateTime(2013, 5, 6);
    //调用Result方法,第一个参数为当前日期,即你要计算的起始日期,第二个参数为起始日期后的多少天                     
    MessageBox.Show (Result (DateTime.Now ,8).ToString ());
}
private DateTime Result(DateTime dt,int n)
{
    DateTime temp = dt;        
    //循还n--,这里n是8 
    while (n-- > 0 )
    {
        //起始日期加1     
        temp = temp.AddDays(1);
        //这里temp.DayOfWeek获取当前日期在一周内是星期几,返回值为整型
        //下面的判断可以直接用6或7进行判断           
        while(temp.DayOfWeek == System.DayOfWeek.Saturday || temp.DayOfWeek == System.DayOfWeek.Sunday)
        temp = temp.AddDays(1);
    }
    return temp;
}

小鱼的方案

以下为本人经过上面代码的基础和高人指点后得出更优的方法

基本方法逻辑:通过EXCEL表的功能生成日期序列,并生成一列辅助列,辅助列进行函数的判断工作日为递增序列,假期为最近一个工作日的序列号。如果为法定假期(因法定假期时间不确定)手动设为与最近一个工作日的序列号,周六、日假期加班手动设为递增序列,例子如下:
日期 序列
2013-8-30 1
2013-8-31 1 (周六)
2013-9-1 1 (周日)
2013-9-2 2
2013-9-3 3
.
.

生成以上两列后把这两列数据插入到数据库,获取所选或当前工作日期的序列号,加上多少个工作日后的日期,然后相加得到对应序列号的工作日期时间

EXCEL配置表

EXCEL需要用到的函数

OR(WEEKDAY(A1)=1,WEEKDAY(A4)=7)
LOOKUP(1,0/(B3:B$3<>0),B3:B$3)
IF(B3=0,LOOKUP(1,0/(B$3:B3<>0),B$3:B3)+1,B3+1))
TEXT(A4,"yyyy-m-d")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值