1.下载并引用My97DatePicker.js

2.将工作日休假的和周末上班的维护到数据库中

3.取出某段时间内的不上班日期集合

/// <summary>
///获取 无效日期集合 1 工作日休息(放假)2 休息日上班(上班)
/// </summary>
/// <returns></returns>
public JsonResult GetValidate()
{
List<string> Lst = new List<string>();
List<DateTime> valiDateLst = new List<DateTime>(); //工作日休息
List<DateTime> unvaliDateLst = new List<DateTime>(); //周末上班

var dt = DateTime.Now;
//前一个月
var fromTime = new DateTime(dt.Year, dt.Month < 2 ? 1 : dt.Month-1, 1);
//后六个月
var toTime = dt.Month > 6 ? new DateTime(fromTime.Year+1,1,1).AddDays(-1): fromTime.AddMonths(7).AddDays(-1);
//TimeSpan得到fromTime和toTime的时间间隔
var ts = toTime.Subtract(fromTime);
//获取两个日期间的总天数
long countday = ts.Days;

//循环用来扣除总天数中的双休日
for (var i = 0; i < countday; i++)
{
var tempdt = fromTime.Date.AddDays(i);
if (tempdt.DayOfWeek == DayOfWeek.Saturday || tempdt.DayOfWeek== DayOfWeek.Sunday)
{
string str = tempdt.ToString("yyyy-MM-dd");
Lst.Add(str);
}
}

List<SpecialDays> specialDaysLst= _specialDaysService.GetAllSpecialDaysList();

if (specialDaysLst==null)
{
specialDaysLst = new List<SpecialDays>();
}
var valiDate = from SpecialDays a in specialDaysLst where a.DayType == 1select a;
var nuValidate = from SpecialDays a in specialDaysLst where a.DayType == 2 select a;
//工作日休息
foreach (var vali in valiDate)
{
if (vali.StartDate.HasValue && vali.EndDate.HasValue)
{
for (DateTime date = vali.StartDate.Value; date <= vali.EndDate; )
{
valiDateLst.Add(date);
date=date.AddDays(1);
}
}
}
//休息日上班
foreach (var vali in nuValidate)
{
if (vali.StartDate.HasValue && vali.EndDate.HasValue)
{
for (DateTime date = vali.StartDate.Value; date <= vali.EndDate;)
{
unvaliDateLst.Add(date);
date = date.AddDays(1);
}
}
}

for (int i = 0; i < valiDateLst.Count; i++)
{
if ((Convert.ToDateTime(valiDateLst[i]) > fromTime && Convert.ToDateTime(valiDateLst[i]) < toTime) && !Lst.Contains(valiDateLst[i].ToString("yyyy-MM-dd")))
{
Lst.Add(valiDateLst[i].ToString("yyyy-MM-dd"));
}
}
for (int i = 0; i < unvaliDateLst.Count; i++)
{
if (Convert.ToDateTime(unvaliDateLst[i]) > fromTime && Convert.ToDateTime(unvaliDateLst[i]) < toTime)
{
Lst.Remove(unvaliDateLst[i].ToString("yyyy-MM-dd"));
}
}
return Json(Lst, JsonRequestBehavior.AllowGet);
}

4.页面引用加过滤条件

$("#ipt_repaymentDate").on("focus", function (dp) {
WdatePicker({
//opposite: true,//如果不设置则disabledDates参数中的值会是“无效日期”
disabledDates: unvalidate_date_Array
});
});

最新文章

  1. Aoite 系列(03) - 一起来 Redis 吧!
  2. Oracle基础和用户管理
  3. 内部类访问的局部变量必须加final
  4. java web项目获取各种路径
  5. javascript之纯数字验证
  6. “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常[WCF]
  7. JS 动态加载脚本 执行回调_转
  8. sql server 2008 修改sa密码
  9. python常用绘图软件包记录
  10. IOS中获取各种文件的目录路径的方法-备
  11. android:launchMode=&quot;singleTask&quot; 与 onNewIntent(Intent intent) 的用法
  12. Tomcat之jvm及连接数设置
  13. 项目中如何使用babel6详解
  14. 从SonarQube谈设计模式
  15. &gt; library(&#39;ggplot2&#39;) Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 不存在叫‘colorspace’这个名字的程辑包
  16. nginx反向代理配置两个不同服务器
  17. python day02作业
  18. 通过状态机来对axi_lite总线进行操作
  19. mysql 常用操作命令
  20. 工具运行过程中,CPU占用过高的分析定位

热门文章

  1. MySQL show slave status命令参数
  2. minor gc 和 full gc
  3. iOS开发——单例模式
  4. PHP内核变量存储
  5. node.js 下依赖Express 实现post 4种方式提交参数
  6. mysql5.7.10和mysql5.5.39两个版本对于group by函数的处理差异
  7. Spring.NET 的IOC(依赖注入)
  8. Android布局及属性归总(查询用)
  9. java 类中的属性为什么一般都是私有的
  10. PHP mysqli连接MySQL数据库