博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根据起止日期构建指定查询条件:第N周(yyyy-MM-dd/yyyy-MM-dd)
阅读量:6678 次
发布时间:2019-06-25

本文共 1683 字,大约阅读时间需要 5 分钟。

          项目中有个查询模块中用到查询条件: 年和周。 以往我直接指定是第几周,后来测试反映如果直接选择周的话并不知道所选周代表的年月日,而无法最快查询数据,后更改查询条件如下: 指定一个起始年月,根据起始年月计算出第一周的日子,然后在第一周的基础上计算剩余周。

         

效果图:

 算法代码:

 

List
list2 = new List
();DateTime startDate = DateTime.Parse("2014" + "-01-01");DateTime endDate = DateTime.Parse("2014" + "-12-31");TimeSpan ts = (TimeSpan)(endDate - startDate); int countday = int.Parse(ts.TotalDays.ToString());//总天数int startweek = Convert.ToInt32(startDate.DayOfWeek.ToString("d"));//开始日期星期几startweek = startweek == 0 ? 7 : startweek;//星期日为0改为7 DateTime startDate2 = startDate.AddDays(-startweek + 1);//把第一周凑满的开始日期countday += startweek - 1;//再计算总天数double countweek = Math.Ceiling((double)countday / 7);if (countweek > 0) { list2.Add(new { ID = 1, Name = "第1周(" + startDate.ToString("yyyy-MM-dd") + "/" + (startDate2.AddDays(6)).ToString("yyyy-MM-dd") + ")" }); } for (int w = 2; w <= countweek; w++) { if (w != countweek) { list2.Add(new { ID = w, Name = "第" + w.ToString() + "周(" + startDate2.AddDays(7 * (w - 1)).ToString("yyyy-MM-dd") + "/" + (startDate2.AddDays((7 * w) - 1).ToString("yyyy-MM-dd")) + ")" }); } else { list2.Add(new { ID = w, Name = "第" + w.ToString() + "周(" + startDate2.AddDays(7 * (w - 1)).ToString("yyyy-MM-dd") + "/" + (endDate.ToString("yyyy-MM-dd")) + ")" }); } } ddlHoursdistribution.DataSource = list2; ddlHoursdistribution.DataBind();

  

     关键点就是根据开始日期计算第一周的时间,比如2013-1-1周二,那么就在周的基础上减去1天,等于起点就到2012-12-30了,然后在这个基础上+6,完成第一周的计算,剩下的就直接在计算后的日期上相加,由于个人对算法的知识了解的少,请教同事后得出该算法,感谢我的同事。

 

转载地址:http://eiyao.baihongyu.com/

你可能感兴趣的文章
Android 项目导入后真机运行提示:W/dalvikvm(10375): VFY 错误
查看>>
redis数据丢失及解决
查看>>
Android 刷新view
查看>>
Windows 7下 找不到msxml.dll的错误的解决方法
查看>>
多机集群环境搭建hadoop笔记
查看>>
如何将maven项目打包成可执行的jar
查看>>
Centos 服务器软件安装
查看>>
[linux]fork、source、exec、ulimit
查看>>
android AsyncTask简单使用
查看>>
正则表达式
查看>>
JQuery插件开发研究
查看>>
关于C++类静态成员在Delphi中实现的思考
查看>>
Codeforces Round #278 (Div. 2) b
查看>>
lvs 集群配置
查看>>
开源面向对象数据库 db4o 之旅,第 1 部分: 初识 db4o
查看>>
SQL SERVER 获得一个月有多少天 的函数例子
查看>>
.Net 调式案例—实验4 高CPU(High CPU)回顾
查看>>
java 日期操作,Date、Calendar 操作
查看>>
如何移除一个Bundle
查看>>
ECMALL 增加上传图片自动增加水印功能
查看>>