`

C#里巧用DateTime预设一些可选的日期范围

阅读更多

//大家在做报表或查询的时候都会有给用户预设一些可选的日期范围(如上图)
//如本年度销售额、本季度利润、本月新增客户
//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=newstring[]{"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
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();

分享到:
评论

相关推荐

    C#巧用DateTime预设可选的日期范围(如本年度、本季度、本月等)

    本文实例为大家分享了C# DateTime预设可选的日期范围的相关代码,可以选择本年度、本季度、本月等,供大家参考,具体内容如下 效果: 大家在做报表或查询的时候都会有给用户预设一些可选的日期范围(如上图) 如本...

    使用DateTimePicker程序(C#代码编写)

    2. **最大值和最小值**:你可以设置`MaxValue`和`MinValue`属性来限制用户可选的日期和时间范围。 3. **格式化显示**:通过`Format`属性,可以控制日期和时间的显示格式,例如短日期(`DateTimePickerFormat.Short`...

    c#日历控件

    - **预设日期**:`SelectedDates`集合用于获取或设置用户所选的日期,这在多选模式下尤其有用。 3. **样式和外观** - **颜色和字体**:可以改变控件的前景色、背景色和字体,以适应不同的UI设计。 - **样式模板*...

    winform C# 定时关机开关.zip

    在本文中,我们将深入探讨如何使用C#编程语言在Windows Forms(Winform)环境中创建一个定时关机功能的控制开关。这个项目的核心是利用.NET Framework提供的API和C#的事件处理机制来实现定时任务,例如计算机自动...

    在网页编程中超好用的日历控件

    - 开发者还可以根据需求进行定制,比如改变日期格式、设置可选日期范围、添加日期限制或预设值等。 6. **响应式设计**: - 确保日历控件在不同设备(如手机、平板、桌面)上都能正常工作,需要考虑响应式设计。这...

    发两个带时分秒的日期控件和使用方法

    2. **实例化控件**:创建控件对象,并设置其属性,如初始值、显示格式、可选范围等。 3. **事件监听**:绑定事件处理器,例如当用户选择日期和时间后触发的事件。 4. **布局**:将控件添加到用户界面的布局中,可以...

    C#多线程学习之(五)使用定时器进行多线程的自动管理

    这些参数包括一个TimerCallback委托(表示要执行的方法),一个可选的状态对象,延迟时间和周期间隔。例如: ```csharp Timer timer = new Timer(timerDelegate, s, 1000, 1000); ``` - `timerDelegate`:表示要...

    关于C# 4.0新特性“缺省参数”的实现详解

    可以看到,`[opt]` 表示参数是可选的,而 `.param` 指令用于设置参数的默认值。这些特性虽然在源代码中不可见,但它们是缺省参数功能在运行时被正确处理的基础。 总结一下,C# 4.0的缺省参数特性允许我们在定义方法...

    Js-$.extend扩展方法使方法参数更灵活.docx

    在提供的代码示例中,`extend`函数接受一个可选参数`arr`,并使用`$.extend()`方法将其与一个预设的对象合并。如果`arr`未定义或为`null`,`$.extend()`会使用空对象`{}`作为源对象,这样就不会改变目标对象的原始...

    WindowsPhone8模拟时钟

    4. 可选地,添加额外功能,如闹钟和计时器。 遵循这些步骤,你可以创建出一个功能丰富的Windows Phone 8模拟时钟应用,为用户提供方便的时间查看体验。在实际开发过程中,还要注意性能优化,确保应用在不同设备上...

Global site tag (gtag.js) - Google Analytics