本文转载: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
时间: 2024-10-17 10:33:38