本文转载:http://www.cnblogs.com/iamlilinfeng/p/3378659.html

最近工作比较忙,与此同时自己也在业余时间开发一个电子商务网站。虽然每天都很累,但感觉过的相当充实。由于时间紧张,最近没有经常来园子,只是有人留言的时候过来回复下。今天过来刷刷存在感。

二、应用场景举例

1.按指定日期查询

(1)用户在UI上选择日期;

(2)系统计算出今天的起始时间(****年**月**日 00:00:00)和今天的结束时间(****年**月**日 23:59:59);

(3)系统根据根据该日期范围到数据库取出该日期范围的数据。

如下图所示,查询指定日期的航班及机票数量:

2.按时间范围查询

(1)用户在UI上选择“起始日期”和“结束日期”;

(2)系统计算出开始日期的起始时间(****年**月**日 00:00:00);

(2)系统计算出结束日期的结束时间(****年**月**日 23:59:59);

(3)系统根据根据该日期范围到数据库取出该日期范围的数据。

如下图所示,比较常见的按日期查询:

3.按日、月、周、年查询(此处以按月查询为例)

(1)系统取出当前日期;

(2)系统根据当前日期计算出本月的开始日期的起始时间(****年**月**日 00:00:00);

(3)系统根据当前日期计算出本月的结束日期的结束时间(****年**月**日 23:59:59);

(4)系统根据根据该日期范围到数据库取出该日期范围的数据。

如下图所示,比较常见的月报表

4.最终效果

三、代码及下载

  1 /*
2 *
3 * 创建人:李林峰
4 *
5 * 时 间:2009-05-04
6 *
7 * 描 述:日期转换帮助类,常用于报表开发;
8 * 可以转换成为:本日开始时间、本日结束时间、本周开始时间、本周结束时间、本月开始时间、本月结束时间、本年开始时间、本年结束时间
9 *
10 */
11
12 using System;
13
14 namespace SongCai8.WebSite
15 {
16 /// <summary>
17 /// 日期转换帮助类
18 /// </summary>
19 public static class DateTimeHelper
20 {
21 #region 日
22 /// <summary>
23 /// 将日期转换为本日的开始时间
24 /// </summary>
25 /// <param name="value">2001-01-01</param>
26 /// <returns>2001-01-01 00:00:00</returns>
27 public static DateTime ToDayStart(string value)
28 {
29 //转换成日期类型
30 DateTime date = System.Convert.ToDateTime(value);
31 //转换成短日期类型字符
32 string shortDate = date.ToShortDateString();
33 //返回日期类型
34 return System.Convert.ToDateTime(shortDate);
35 }
36
37 /// <summary>
38 /// 将日期转换为本日的开始时间
39 /// </summary>
40 /// <param name="value">任意时间</param>
41 /// <returns>2001-01-01 00:00:00</returns>
42 public static DateTime ToDayStart(DateTime value)
43 {
44 //转换成短日期类型字符
45 string shortDate = value.ToShortDateString();
46 //返回日期类型
47 return System.Convert.ToDateTime(shortDate);
48 }
49
50 /// <summary>
51 /// 将日期转换为本日的开始时间
52 /// </summary>
53 /// <param name="value">2001-01-01</param>
54 /// <returns>2001-01-01 23:59:59</returns>
55 public static DateTime ToDayEnd(string value)
56 {
57 //转换成日期类型
58 DateTime date = System.Convert.ToDateTime(value);
59 //转换成短日期类型
60 DateTime shortDate = System.Convert.ToDateTime(date.ToShortDateString());
61 //返回日期加一天减一秒
62 return shortDate.AddDays(1).AddSeconds(-1);
63 }
64
65 /// <summary>
66 /// 将日期转换为本日的结束时间
67 /// </summary>
68 /// <param name="value">任意时间</param>
69 /// <returns>2001-01-01 23:59:59</returns>
70 public static DateTime ToDayEnd(DateTime value)
71 {
72 //转换成短日期类型
73 DateTime shortDate = System.Convert.ToDateTime(value.ToShortDateString());
74 //返回日期加一天减一秒
75 return shortDate.AddDays(1).AddSeconds(-1);
76 }
77 #endregion
78
79 #region 周
80 /// <summary>
81 /// 将日期转换为本周的开始时间
82 /// </summary>
83 /// <param name="value">2001-01-01</param>
84 /// <returns>2001-01-01 00:00:00</returns>
85 public static DateTime ToWeekStart(string value)
86 {
87 //转换成日期类型
88 DateTime date = System.Convert.ToDateTime(value);
89 //根据当前时间取出该周周一的当前时间
90 DateTime weekStart = ToWeekStart(date, date.Date.DayOfWeek);
91 //转换成短日期类型字符
92 string shortDate = weekStart.ToShortDateString();
93 //返回日期类型
94 return System.Convert.ToDateTime(shortDate);
95 }
96
97 /// <summary>
98 /// 将日期转换为本周的开始时间
99 /// </summary>
100 /// <param name="value">任意时间</param>
101 /// <returns>2001-01-01 00:00:00</returns>
102 public static DateTime ToWeekStart(DateTime value)
103 {
104 //根据当前时间取出该周周一的当前时间
105 DateTime weekStart = ToWeekStart(value, value.Date.DayOfWeek);
106 //转换成短日期类型字符
107 string shortDate = weekStart.ToShortDateString();
108 //返回日期类型
109 return System.Convert.ToDateTime(shortDate);
110 }
111
112 /// <summary>
113 /// 将日期转换为本周的结束时间
114 /// </summary>
115 /// <param name="value">2001-01-01</param>
116 /// <returns>2001-01-01 23:59:59</returns>
117 public static DateTime ToWeekEnd(string value)
118 {
119 //转换成日期类型
120 DateTime date = System.Convert.ToDateTime(value);
121 //根据当前时间取出该周周末的当前时间
122 DateTime weekEnd = ToWeekEnd(date, date.Date.DayOfWeek);
123 //转换成短日期类型字符
124 string shortDate = weekEnd.ToShortDateString();
125 //返回日期加一天减一秒
126 return Convert.ToDateTime(shortDate).AddDays(1).AddSeconds(-1);
127 }
128
129 /// <summary>
130 /// 将日期转换为本周的结束时间
131 /// </summary>
132 /// <param name="value">任意时间</param>
133 /// <returns>2001-01-01 23:59:59</returns>
134 public static DateTime ToWeekEnd(DateTime value)
135 {
136 //根据当前时间取出该周周末的当前时间
137 DateTime weekEnd = ToWeekEnd(value, value.Date.DayOfWeek);
138 //转换成短日期类型字符
139 string shortDate = weekEnd.ToShortDateString();
140 //返回日期类型
141 //返回日期加一天减一秒
142 return Convert.ToDateTime(shortDate).AddDays(1).AddSeconds(-1);
143 }
144
145 /// <summary>
146 /// 将日期转换为本周周一的某一时间
147 /// </summary>
148 /// <param name="date">将要转换的日期</param>
149 /// <param name="week">传入日期的周的枚举类型</param>
150 /// <returns>2001-01-01 12:12:12</returns>
151 private static DateTime ToWeekStart(DateTime date, DayOfWeek week)
152 {
153 DateTime WeekStart = new DateTime();
154 switch (week)
155 {
156 case DayOfWeek.Monday:
157 WeekStart = date;
158 break;
159 case DayOfWeek.Tuesday:
160 WeekStart = date.AddDays(-1);
161 break;
162 case DayOfWeek.Wednesday:
163 WeekStart = date.AddDays(-2);
164 break;
165 case DayOfWeek.Thursday:
166 WeekStart = date.AddDays(-3);
167 break;
168 case DayOfWeek.Friday:
169 WeekStart = date.AddDays(-4);
170 break;
171 case DayOfWeek.Saturday:
172 WeekStart = date.AddDays(-5);
173 break;
174 case DayOfWeek.Sunday:
175 WeekStart = date.AddDays(-6);
176 break;
177 }
178 return WeekStart;
179 }
180
181 /// <summary>
182 /// 将日期转换为本周周日的某一时间
183 /// </summary>
184 /// <param name="date">将要转换的日期</param>
185 /// <param name="week">传入日期的周的枚举类型</param>
186 /// <returns>2001-01-01 12:12:12</returns>
187 private static DateTime ToWeekEnd(DateTime date, DayOfWeek week)
188 {
189 DateTime WeekStart = new DateTime();
190 switch (week)
191 {
192 case DayOfWeek.Monday:
193 WeekStart = date.AddDays(6);
194 break;
195 case DayOfWeek.Tuesday:
196 WeekStart = date.AddDays(5);
197 break;
198 case DayOfWeek.Wednesday:
199 WeekStart = date.AddDays(4);
200 break;
201 case DayOfWeek.Thursday:
202 WeekStart = date.AddDays(3);
203 break;
204 case DayOfWeek.Friday:
205 WeekStart = date.AddDays(2);
206 break;
207 case DayOfWeek.Saturday:
208 WeekStart = date.AddDays(1);
209 break;
210 case DayOfWeek.Sunday:
211 WeekStart = date;
212 break;
213 }
214 return WeekStart;
215 }
216
217 #endregion
218
219 #region 月
220 /// <summary>
221 /// 将日期转换为本月的开始时间
222 /// </summary>
223 /// <param name="value">2001-01-01</param>
224 /// <returns>2001-01-01 00:00:00</returns>
225 public static DateTime ToMonthStart(string value)
226 {
227 //转换成日期类型
228 DateTime date = System.Convert.ToDateTime(value);
229 //根据年、月重新创建日期
230 return new DateTime(date.Year, date.Month, 1);
231 }
232
233 /// <summary>
234 /// 将日期转换为本月的开始时间
235 /// </summary>
236 /// <param name="value">任意时间</param>
237 /// <returns>2001-01-01 00:00:00</returns>
238 public static DateTime ToMonthStart(DateTime value)
239 {
240 //根据年、月重新创建日期
241 return new DateTime(value.Year, value.Month, 1);
242 }
243
244 /// <summary>
245 /// 将日期转换为本月的结束时间
246 /// </summary>
247 /// <param name="value">2001-01-01</param>
248 /// <returns>2001-01-31 23:59:59</returns>
249 public static DateTime ToMonthEnd(string value)
250 {
251 //转换成日期类型
252 DateTime date = System.Convert.ToDateTime(value);
253 //根据年、月重新创建日期
254 DateTime monthStart = new DateTime(date.Year, date.Month, 1);
255 //创建结束日期
256 return monthStart.AddMonths(1).AddSeconds(-1);
257 }
258
259 /// <summary>
260 /// 将日期转换为本月的结束时间
261 /// </summary>
262 /// <param name="value">任意时间</param>
263 /// <returns>2001-01-31 23:59:59</returns>
264 public static DateTime ToMonthEnd(DateTime value)
265 {
266 //根据年、月重新创建日期
267 DateTime monthStart = new DateTime(value.Year, value.Month, 1);
268 //创建结束日期
269 return monthStart.AddMonths(1).AddSeconds(-1);
270 }
271 #endregion
272
273 #region 年
274 /// <summary>
275 /// 将日期转换为本年的开始时间
276 /// </summary>
277 /// <param name="value">2001-01-01</param>
278 /// <returns>2001-01-01 00:00:00</returns>
279 public static DateTime ToYearStart(string value)
280 {
281 //转换成日期类型
282 DateTime date = System.Convert.ToDateTime(value);
283 //根据年、月重新创建日期
284 return new DateTime(date.Year, 1, 1);
285 }
286
287 /// <summary>
288 /// 将日期转换为本年的开始时间
289 /// </summary>
290 /// <param name="value">任意时间</param>
291 /// <returns>2001-01-01 00:00:00</returns>
292 public static DateTime ToYearStart(DateTime value)
293 {
294 //根据年、月重新创建日期
295 return new DateTime(value.Year, 1, 1);
296 }
297
298 /// <summary>
299 /// 将日期转换为本年的结束时间
300 /// </summary>
301 /// <param name="value">2001-01-01</param>
302 /// <returns>2001-12-31 23:59:59</returns>
303 public static DateTime ToYearEnd(string value)
304 {
305 //转换成日期类型
306 DateTime date = System.Convert.ToDateTime(value);
307 //根据年、月重新创建日期
308 DateTime yearStart = new DateTime(date.Year, 1, 1);
309 //创建结束日期
310 DateTime yearEnd = new DateTime(date.Year, 1, 1).AddYears(1).AddSeconds(-1);
311 return yearEnd;
312 }
313
314 /// <summary>
315 /// 将日期转换为本年的结束时间
316 /// </summary>
317 /// <param name="value">任意时间</param>
318 /// <returns>2001-12-31 23:59:59</returns>
319 public static DateTime ToYearEnd(DateTime value)
320 {
321 //根据年、月重新创建日期
322 DateTime yearStart = new DateTime(value.Year, 1, 1);
323 //创建结束日期
324 return new DateTime(value.Year, 1, 1).AddYears(1).AddSeconds(-1);
325 }
326 #endregion
327 }
328 }

代码下载:DateTimeHelper.rar

C# 常用日期类型转换帮助类的更多相关文章

  1. java常用日期类型转换

    import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import j ...

  2. 泛型集合、datatable常用数据类型转换Json帮助类

    泛型集合.datatable常用数据类型转换Json帮助类 using System; using System.Data; using System.Configuration; using Sys ...

  3. Java日期时间API系列12-----Jdk8中java.time包中的新的日期时间API类,日期格式化,常用日期格式大全

    通过Java日期时间API系列10-----Jdk8中java.time包中的新的日期时间API类的DateTimeFormatter, 可以看出java8的DateTimeFormatter完美解决 ...

  4. [转]SpringMVC日期类型转换问题三大处理方法归纳

    http://blog.csdn.net/chenleixing/article/details/45190371 前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后台实体类之间日 ...

  5. SpringMVC日期类型转换问题三大处理方法归纳

    方法一:实体类中加日期格式化注解 @DateTimeFormat(pattern = "yyyy-MM-dd") private Date receiveAppTime; 方法二: ...

  6. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

  7. Java8与传统的日期和时间类详解

    一.传统的日期时间类(Date和Calendar) 1. Date类 这里的Date是位于java.util包下的类,而不是java.sql包下的date类,Date对象即包含日期也包含时间,从JDK ...

  8. springmvc的日期类型转换

      springmvc的日期类型转换 # spring mvc绑定参数之类型转换有三种方式: ## 1.实体类中加日期格式化注解 @DateTimeFormat(pattern="yyyy- ...

  9. ansible笔记(8):常用模块之系统类模块(二)

    ansible笔记():常用模块之系统类模块(二) user模块 user模块可以帮助我们管理远程主机上的用户,比如创建用户.修改用户.删除用户.为用户创建密钥对等操作. 此处我们介绍一些user模块 ...

随机推荐

  1. VirtualBox clonevdi文件和修改vdi的uuid

    因为VirtualBox下,不允许有相同的uuid,所以要拷贝一份新的vdi像普通的拷贝是办不到的.需要用VirtualBox自带的一个.exe文件VBoxManage. 1.首先,进入终端或者是命令 ...

  2. LA 3708 Graveyard 墓地雕塑 NEERC 2006

    在一个周长为 10000 的圆上等距分布着 n 个雕塑.现在又有 m 个新雕塑加入(位置可以随意摆放),希望所有 n + m 个雕塑能在圆周上均匀分布.这就需要移动一些原有的雕塑.要求 n 个雕塑移动 ...

  3. SVN版本管理提示信息

    1. FAQ 1.路径或权限不足时将出现错误信息提示: http://192.134.4.251/svn/svnproject(路径不对)Error * PROPFIND request failed ...

  4. [Papers]NSE, $\pi$, Lorentz space [Suzuki, JMFM, 2012]

    $$\bex \sen{\pi}_{L^{s,\infty}(0,T;L^{q,\infty}(\bbR^3))} \leq \ve_*, \eex$$ with $$\bex \frac{2}{s} ...

  5. [Everyday Mathematics]20150114

    设 $a_0$, $d$ 给定, $a_k=a_0+kd$, $k=0,1,\cdots,n$. 试求如下 $n+1$ 阶行列式的值: $$\bex \sev{\ba{ccccc} a_0&a ...

  6. java jvm学习笔记十三(jvm基本结构)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 这一节,主要来学习jvm的基本结构,也就是概述.说是概述,内容很多,而且概念量也很大,不过关于概念方面,你不用担心,我完 ...

  7. UiThread DEMO

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.a ...

  8. RHCE ext3文件系统故障一例

    好久没来了,博客长草了,我来除除草. 给我分了两人,一个统招,一个Java两年开发经验的社招,让我这从工具平台运维往Python开发方向转的工作是举步维艰啊~ 领导看人还是真特么的不准,希望今年招聘的 ...

  9. Unity3d 基于物理渲染Physically-Based Rendering之specular BRDF

    在实时渲染中Physically-Based Rendering(PBR)中文为基于物理的渲染它能为渲染的物体带来更真实的效果,而且能量守恒 稍微解释一下字母的意思,为对后文的理解有帮助,从右到左L为 ...

  10. cocos2d-x 详解之 CCAction(动作)

    关于动作部分,总的来说使用起来比较简单,创建一个动作,然后让可渲染节点如精灵去执行这个动作即可.cocos2dx提供了很多类型的动作,使用起来也很方便.本节重点介绍动作CCAction的子类之一时间动 ...