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

效果图:

算法代码:

List<dynamic> list2 = new List<dynamic>();
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,完成第一周的计算,剩下的就直接在计算后的日期上相加,由于个人对算法的知识了解的少,请教同事后得出该算法,感谢我的同事。

根据起止日期构建指定查询条件:第N周(yyyy-MM-dd/yyyy-MM-dd)的更多相关文章

  1. 指定查询条件,查询对应的集合List(单表)

    TestDao.java(测试类) @Test public void findCollectionByConditionNoPage(){  ApplicationContext ac = new ...

  2. Lambda 中如果构建一个查询条件,扔该Where返回我们需要的数据。

    有一个需求,比如所 省市县 这三个查询条件 都可能有可能没有,但是我们的查询条件怎么构建呢 首先需要看一下 Lambda中Where这个方法需要什么参数 public static IEnumerab ...

  3. MySql:SELECT 语句(三) WHERE 指定查询条件

    1.WHERE 子句条件操作符 包括:> .<.>=.<=.!= .=.BETWEEN ... AND ...(在指定的两个值之间) 示例: 1)select * from s ...

  4. 使用Spring Data JPA的Specification构建数据库查询

    Spring Data JPA最为优秀的特性就是可以通过自定义方法名称生成查询来轻松创建查询SQL.Spring Data JPA提供了一个Repository编程模型,最简单的方式就是通过扩展Jpa ...

  5. MySQL单表查询 条件查询,分组

    目录 1 where 条件查询 between like not in 2 group by 分组 聚合函数:max min sum avg count 3 having 过滤 4 distinct ...

  6. SpringBoot使用注解的方式构建Elasticsearch查询语句,实现多条件的复杂查询

    背景&痛点 通过ES进行查询,如果需要新增查询条件,则每次都需要进行硬编码,然后实现对应的查询功能.这样不仅开发工作量大,而且如果有多个不同的索引对象需要进行同样的查询,则需要开发多次,代码复 ...

  7. LINQ to SQL 运行时动态构建查询条件

    在进行数据查询时,经常碰到需要动态构建查询条件.使用LINQ实现这个需求可能会比以前拼接SQL语句更麻烦一些.本文介绍了3种运行时动态构建查询条件的方法.本文中的例子最终实现的都是同一个功能,从Nor ...

  8. 使用构造器模式动态构建Map作为mybatis的查询条件

    import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import com.fas ...

  9. 在Bootstrap开发框架中使用bootstrapTable表格插件和jstree树形列表插件时候,对树列表条件和查询条件的处理

    在我Boostrap框架中,很多地方需要使用bootstrapTable表格插件和jstree树形列表插件来共同构建一个比较常见的查询界面,bootstrapTable表格插件主要用来实现数据的分页和 ...

随机推荐

  1. Linux下安装maven

    1.首先到Maven官网下载安装文件,目前最新版本为3.0.3,下载文件为apache-maven-3.0.3-bin.tar.gz,下载可以使用wget命令: 2.进入下载文件夹,找到下载的文件,运 ...

  2. GeoIP Legacy City数据库安装说明

    Here is a brief outline of the steps needed to install GeoIP Legacy City on Linux/Unix. The installa ...

  3. 谢欣伦 - OpenDev原创教程 - 蓝牙设备查找类CxBthRadio & CxBthRadioFind

    这是一个精练的蓝牙设备查找类,类名.函数名和变量名均采用匈牙利命名法.小写的x代表我的姓氏首字母(谢欣伦),个人习惯而已,如有雷同,纯属巧合. CxBthRadioFind的使用如下: void CU ...

  4. HTML基础篇之内嵌框架和表单

    内嵌框架: <iframe src="http://www.baidu.com" name="d"></iframe> 网页会显示一个这 ...

  5. ant 自动化编译

    bulid.xml配置: <?xml version="1.0" encoding="UTF-8" ?> <project name=&quo ...

  6. Visual Studio 2013 Ultimate的可视化代码功能

    可视化和了解代码综合了如何使用visual studio可视化代码来帮助理解代码: 理解代码和代码之间的关系:(1)Code Map(2)Dependency Graphs 理解代码交互:Sequen ...

  7. UI控件(UIWebView)

    本文主要记录UIWebView三方面内容: 1.基本的加载网页链接或文件: 2.网页js调用原生,也就是Cordova混合架构的原理: 3.原生调用js程序: 原生部分主要代码: @implement ...

  8. 【Java并发编程实战】-----“J.U.C”:ReentrantLock之二lock方法分析

    前一篇博客简单介绍了ReentrantLock的定义和与synchronized的区别,下面跟随LZ的笔记来扒扒ReentrantLock的lock方法.我们知道ReentrantLock有公平锁.非 ...

  9. 台式电脑、笔记本快捷选择Boot(启动项快捷键)大全

    我们在安装系统时,会去设置电脑是从硬盘启动.U盘启动.光驱启动.网卡启动. 一般设置的方法有两种:一种是进BIOS主板菜单设置启动项顺序:另一种就是我在这里要介绍的快捷选择启动项. 以下是网友整理的各 ...

  10. Can't use Subversion command line client: svn Probably the path to Subversion executable is wrong. Fix it.

    1.最近使用SVN工具时,Checkout出项目到本地后后,然后将其导入到Intellij idea中开发,在提交svn代码的时候,出现这样的错误:Can't use Subversion comma ...