C# 常用日期类型转换帮助类

本文转载: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

posted @ 2014-10-20 22:22  跟着阿笨一起玩.NET  阅读(830)  评论(0编辑  收藏  举报