这里对特殊日期采用了模拟的方式,在实际开发中当然这些数据是从数据库中读取,调用方法时 只需传入开始时间(一般当前) 和N(代表N个工作日)
        /// <summary>
/// 获取时间
/// </summary>
/// <param name="dt">当前时间</param>
/// <param name="n">N个工作日</param>
/// <returns></returns>
public static string Dt(DateTime dt, int n)
{
WorkDay workDay = new WorkDay();
//特殊日期(此处数据为模拟数据)
List<WorkDay> workDayList = new List<WorkDay>();
workDayList.Add(new WorkDay { Key=1,Dt=DateTime.Now.AddDays(1),type=WorkDayType.休息});
workDayList.Add(new WorkDay { Key = 2, Dt = DateTime.Now.AddDays(2), type = WorkDayType.休息 });
workDayList.Add(new WorkDay { Key = 3, Dt = DateTime.Now.AddDays(3), type = WorkDayType.工作 });
workDayList.Add(new WorkDay { Key = 4, Dt = DateTime.Now.AddDays(4), type = WorkDayType.工作 });
workDayList.Add(new WorkDay { Key = 5, Dt = DateTime.Now.AddDays(5), type = WorkDayType.休息 });
workDayList.Add(new WorkDay { Key = 6, Dt = DateTime.Now.AddDays(6), type = WorkDayType.休息 });
workDayList.Add(new WorkDay { Key = 7, Dt = DateTime.Now.AddDays(7), type = WorkDayType.休息 });
workDayList.Add(new WorkDay { Key = 8, Dt = DateTime.Now.AddDays(8), type = WorkDayType.休息 });
workDayList.Add(new WorkDay { Key = 9, Dt = DateTime.Now.AddDays(9), type = WorkDayType.休息 });
workDayList.Add(new WorkDay { Key = 10, Dt = DateTime.Now.AddDays(10), type = WorkDayType.休息 });
workDayList.Add(new WorkDay { Key = 11, Dt = DateTime.Now.AddDays(11), type = WorkDayType.休息 });
workDayList.Add(new WorkDay { Key = 12, Dt = DateTime.Now.AddDays(12), type = WorkDayType.休息 });
int d = 0;
if (n<=0)
{
d = 0;
return dt.AddDays(d).ToShortDateString();
}
for (int i = 1; i >0; i++)
{ var gg = workDayList.Where(x => x.Dt.ToShortDateString() == dt.AddDays(i).ToShortDateString()).FirstOrDefault();
if ((int)dt.AddDays(i).DayOfWeek == 0 || (int)dt.AddDays(i).DayOfWeek == 6)
{
//如果为周六或者周末 则判断是否为工作时间
if (gg != null)
{
if (gg.type == WorkDayType.工作)
{
d++;
}
}
}
else //不是周末和周六
{
if (gg != null)
{
if (gg.type == WorkDayType.休息)
{
}
else
{
d++;
}
}
else
{
d++;
}
}
if (d==n)
{
return dt.AddDays(i).ToShortDateString();
}
}
return dt.AddDays(d).ToShortTimeString();//这句代码没实际意义,只为编译器通过
}

  

当然需要添加一个类  和一个枚举

   public class WorkDay
{
public DateTime Dt { get; set; }
public int Key { get; set; }
public WorkDayType type { get; set; }
}
public enum WorkDayType
{
工作,休息
}

  

N个工作日后的日期的更多相关文章

  1. java获取n个工作日后的日期, 排除周末和节假日(顺延)

    一.写在前面 需求: 工作需要获取n个工作日后的日期, 需要排除weekend和holiday, holiday存在数据库中, 存入的形式是一个节日有起始日期和截止日期(以下文中有关于节假日的表截图) ...

  2. python 递归计算若干工作日后的日期

    import datetime # 根据第一次计算出来的休息日数,计算还需要的工作日数.(递归调用) def get_next_date(self, start_date, weekend_days) ...

  3. 前端yyyy-mm-dd格式 计算一段工作日后,日期

    //计算一段工作日后,日期getWorkday(dat, itervalByDay) { function formatTen(f) { if (parseInt(f, 10) < 10) { ...

  4. ABAP 日期函数

    一 财务期间处理 T_CODE: OB29 **取 公司年度变式, 和 货币  SELECT SINGLE waers periv FROM t001        INTO (v_waers,v_p ...

  5. Numpy进阶操作

    目录 1. 如何获取满足条设定件的索引 2. 如何将数据导入和导出csv文件 3. 如何保存和加载numpy对象 4. 如何按列或行拼接numpy数组 5. 如何按列对numpy数组进行排序 6. 如 ...

  6. 我的第一篇博客之js的XXXX年XX月XX日 星期[日一-六] [上下]午 XX时:XX分

    <!DOCTYPE html> <html>     <head> <title>test</title>                 ...

  7. Java节假日算法

    类:Vacation package test; import java.io.Serializable; import java.util.Date; public class Vacation i ...

  8. 结束日期必须大于开始日期--My97DatePicker日历控制的又一方便之处

    在做时间查询时,有时需要两个日期,从一个日期到另外一个日期的那种,但是这样会有一个问题,比如后者的结束日期晚于开始日期怎么办?用JS写验证,麻烦,呵呵,用这个日历控件,可方便实现结束日期只显示开始日期 ...

  9. MYSQL基础03(日期函数)

    工作中对日期的处理是经常遇到的,需求可能多种多样,因此重点介绍. 1.获取当前日期 select NOW() -- 结果:2015-10-28 22:41:11 ),NOW() -- 结果 2015- ...

随机推荐

  1. 什么是混合app?

    APP混合模式和原生模式的优劣 ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-06-27 每当你打算开发移动应用程序时,都要考虑你的应用如何创建以及如何部署 ...

  2. 在安卓手机上安装完整kali linux系统

    俗话说,没图说个JB.好我马上上图 提醒:我在这里只是提供一个思路过程,希望可以帮到你,同时我也做一个记录,有任何问题欢迎  0.0.:I87OI94664  威信 :Z2tsYmI1MjA=  (b ...

  3. PHP之Trait详解

    php从以前到现在一直都是单继承的语言,无法同时从两个基类中继承属性和方法,为了解决这个问题,php出了Trait这个特性 用法:通过在类中使用use 关键字,声明要组合的Trait名称,具体的Tra ...

  4. Python闭包举例

    Python闭包的条件: 1.函数嵌套.在外部函数内,定义内部函数. 2.参数传递.外部函数的局部变量,作为内部函数参数. 3.返回函数.外部函数的返回值,为内部函数. 举例如下: def line_ ...

  5. Java泛型相关总结(下)

    约束与局限性 不能用基本类型实例化类型参数 不能像Pair<double>这样调用,只能Pair<Double>,原因是类型擦除 运行时类型查询只使用于原始类型 虚拟机中的对象 ...

  6. Java中List集合去除重复数据的方法

    1. 循环list中的所有元素然后删除重复 public static List removeDuplicate(List list) { for ( int i = 0 ; i < list. ...

  7. Redis 5.0.3集群部署

    参考文章 https://blog.csdn.net/yyTomson/article/details/85783753 https://www.cnblogs.com/zy-303/p/102731 ...

  8. Ignite(三): Ignite VS Spark

    参考:https://www.itcodemonkey.com/article/9613.html gnite 和 Spark,如果笼统归类,都可以归于内存计算平台,然而两者功能上虽然有交集,并且 I ...

  9. java注解篇

    @SuppressWarnings注解 该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默. 允许您选择性地取消特定代码段(即,类或方法)中的警告.其中的想法是当您看到警告 ...

  10. java http 请求的工具类

    /*** Eclipse Class Decompiler plugin, copyright (c) 2016 Chen Chao (cnfree2000@hotmail.com) ***/pack ...