首页 > 代码库 > C# 常用日期类型转换帮助类

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         #endregion218 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         #endregion272 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         #endregion327     }328 }


代码下载:DateTimeHelper.rar

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