//大家在做报表或查询的时候都会有给用户预设一些可选的日期范围(如上图)
                //如本年度销售额、本季度利润、本月新增客户
                //C#里内置的DateTime基本上都可以实现这些功能,巧用DateTime会使你处理这些事来变轻松多了
               
                //今天
                DateTime.Now.Date.ToShortDateString();
                //昨天,就是今天的日期减一
                DateTime.Now.AddDays(-1).ToShortDateString();
                //明天,同理,加一
                DateTime.Now.AddDays(1).ToShortDateString();

                //本周(要知道本周的第一天就得先知道今天是星期几,从而得知本周的第一天就是几天前的那一天,要注意的是这里的每一周是从周日始至周六止
                DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
                DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString();
                //如果你还不明白,再看一下中文显示星期几的方法就应该懂了
                //由于DayOfWeek返回的是数字的星期几,我们要把它转换成汉字方便我们阅读,有些人可能会用switch来一个一个地对照,其实不用那么麻烦的              
                string[] Day = new string[] { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
                Day[Convert.ToInt16(DateTime.Now.DayOfWeek)];

                //上周,同理,一个周是7天,上周就是本周再减去7天,下周也是一样
                DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();
                DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();
                //下周
                DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString();
                DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek))) + 7).ToShortDateString();
                //本月,很多人都会说本月的第一天嘛肯定是1号,最后一天就是下个月一号再减一天。当然这是对的
                //一般的写法
                DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1"; //第一天
                DateTime.Parse(DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "1").AddMonths(1).AddDays(-1).ToShortDateString();//最后一天

                //巧用C#里ToString的字符格式化更简便
                DateTime.Now.ToString("yyyy-MM-01");
                DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).AddDays(-1).ToShortDateString();

                //上个月,减去一个月份
                DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(-1).ToShortDateString();
                DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
                //下个月,加去一个月份
                DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(1).ToShortDateString();
                DateTime.Parse(DateTime.Now.ToString("yyyy-MM-01")).AddMonths(2).AddDays(-1).ToShortDateString();
                //7天后
                DateTime.Now.Date.ToShortDateString();
                DateTime.Now.AddDays(7).ToShortDateString();
                //7天前
                DateTime.Now.AddDays(-7).ToShortDateString();
                DateTime.Now.Date.ToShortDateString();

                //本年度,用ToString的字符格式化我们也很容易地算出本年度的第一天和最后一天
                DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).ToShortDateString();
                DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).AddDays(-1).ToShortDateString();
                //上年度,不用再解释了吧
                DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(-1).ToShortDateString();
                DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddDays(-1).ToShortDateString();
                //下年度
                DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();
                DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(2).AddDays(-1).ToShortDateString();

                //本季度,很多人都会觉得这里难点,需要写个长长的过程来判断。其实不用的,我们都知道一年四个季度,一个季度三个月
                //首先我们先把日期推到本季度第一个月,然后这个月的第一天就是本季度的第一天了
                DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
                //同理,本季度的最后一天就是下季度的第一天减一
                DateTime.Parse(DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
                //下季度,相信你们都知道了。。。。收工
                DateTime.Now.AddMonths(3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
                DateTime.Parse(DateTime.Now.AddMonths(6 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();
                //上季度
                DateTime.Now.AddMonths(-3 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01");
                DateTime.Parse(DateTime.Now.AddMonths(0 - ((DateTime.Now.Month - 1) % 3)).ToString("yyyy-MM-01")).AddDays(-1).ToShortDateString();

转载于:https://www.cnblogs.com/liyuxin/archive/2011/09/09/2172204.html

C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)相关推荐

  1. C#中用DateTime的ParseExact方法解析日期时间(excel中使用系统默认的日期格式)

    最近做的项目中服务器是英文的系统,系统需要通过excel的单元格导入日期,excel中的日期格式是系统默认的日期格式,如下图所示 以上日期格式,会跟着操作系统设置的日期格式相同例如我的中文系统的日期格 ...

  2. python datetime 加一个月_Python日期的加减等操作的示例

    本文介绍了Python日期的加减等操作的示例,分享给大家,也给自己留个笔记 1. 日期输出格式化 所有日期.时间的api都在datetime模块内. 1. datetime => string ...

  3. sql server中datetime默认值设置和日期函数

    sql server中datetime默认值设置和日期函数 select CONVERT(varchar, getdate(), 120 )         -----------------> ...

  4. 【Salesforce】巧用公式字段及标准函数解决日期间隔业务需求

    巧用公式字段及标准函数解决日期间隔业务需求 文章目录 巧用公式字段及标准函数解决日期间隔业务需求 业务场景 公式字段特点 使用Salesforce提供的方法构建公式 判断是否达到一季度 判断有没有多余 ...

  5. Excel表格里的数据全部变成了时间或者日期格式的时候怎么办???

    Excel表格里的数据全部变成了时间或者日期格式的时候怎么办??? 1. 打开Excel,任意选中一单元格,单击鼠标右键,选择设置单元格格式. 2. 在数字自定义类型中,找到如图中前缀为[$-F400 ...

  6. mysql查询datetime的年月日_mysql 里面的date datetime怎么才能只取年月日

    数据按照年月日分组 mysql按年月日分组统计的查询 SELECT DATE_FORMAT( `report_date`, "%Y-%m-%d" )  DATE_1, COUNT( ...

  7. 【转载】Python日期时间模块datetime详解与Python 日期时间的比较,计算实例代码

    本文转载自脚本之家,源网址为:https://www.jb51.net/article/147429.htm 一.Python中日期时间模块datetime介绍 (一).datetime模块中包含如下 ...

  8. 将一个datetime的now转换为只有日期的_不要眨眼!中英文、大小写转换,一秒就搞定!

    私信回复关键词[福利],获取丰富办公资源~ 助你高效办公早下班! 大家好,我是秋小 E~这里是秋叶 Excel 的[问答精华]专栏! 问题主要来自秋叶 Excel 学习班的同学,回答由讲师.助教共同完 ...

  9. asp 之 让实体中字段类型为DateTime的字段仅仅显示日期不显示时间

           在我们平时的工作开发中.我们一般会遇到这种一个问题:某个实体的某个字段是DateTime类型的,但是我们在界面上仅仅想让它显示日期不显示时间! 一个订单实体: //订单类public c ...

最新文章

  1. 操作系统导论部分章节习题
  2. Android5.1.1源码 - 让某个APP以解释执行模式运行
  3. Java生鲜电商平台-订单中心服务架构与异常订单逻辑
  4. 成年人的样子是什么样子_不只是看样子
  5. waitpid()函数
  6. 《面向模式的软件体系结构2-用于并发和网络化对象模式》读书笔记(13)--- 线程安全接口和双检查加锁优化...
  7. python递归 数字全排列_利用递归实现全排列(python)
  8. new出来的对象怎么回收_JVM的内存模型及垃圾回收算法
  9. SQL server 第三方驱动 JDTS
  10. 中心极限与大数定理律的关系_中心极限定理的最最通俗解释
  11. Golang 大杀器之性能剖析 PProf
  12. LoadRunner正确的登录压力测试方法实战
  13. 快狗打车正式登陆港交所,“更美好,更绿色”的同城货运平台来了!
  14. 零基础应如何学习UI设计
  15. Cesium开发:简单箭头画法
  16. java对接ntlm_通过NTLM获取信息.
  17. 让玩家提升游戏耐玩度的8个小技巧
  18. ttbf 慢 php,連接數據庫不同方式會影響TTBF快慢
  19. 回测好,为什么实盘不靠谱?
  20. CP速配app v2.0.8.2

热门文章

  1. codis配置_codis 源码理解
  2. burg算法的matlab代码实现_导向滤波算法及其matlab代码实现
  3. html5 js选择器,使用HTML5的JS选择器操作页面中的元素
  4. typora居中_Windows系统下Typora的安装和语法
  5. matlab xlsread参数_利用MATLAB批量完成科研数据处理
  6. kingcms php 排序 标签,修改PHPCMS V9列表排序,listorder、order排序功能的方法
  7. python读取usb扫码枪数据_USB
  8. 转行,转向哪里?电子工程师!!!
  9. 来了,单片机最强科普总结!
  10. anguler 画面布局适应屏幕大小_前端开发常见的五大布局模式,绝对不要错过这篇分享!...