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

时间: 2024-12-17 19:28:18

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

java常用日期类型转换

import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.apache.commons.lang.StringUtils; import org.joda.time.DateTime

[Java]常用日期处理

最近在复习Java基础,发现Java中关于日期处理的类比较杂乱,新手常常无法找到合适的方法.于是决定写一篇博文介绍一下Java常用的日期处理. Java中常用的日期相关类以及它们之间的关系如下图所示,其中中间的Date是指java.util.Date,左下的Date指java.sql.Date.这几个类几乎包含了所有常用日期处理的方法,下边将分别详细介绍一下它们. 1.Date(java.util.Date) Date类应该是Java中最早用于日期处理的类了,它的无参构造函数可以创建一个表示当前

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

前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然后逐渐对问题进行跟踪,会发现是日期类型转换失败"映射"不到对应的持久类的日期属性上造成的,由此我还特意写过一篇博文:SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法.感

Java知多少(77)日期和时间类

Java 的日期和时间类位于 java.util 包中.利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间. Date 类 Date 类是 Java 中的日期时间类,其构造方法比较多,下面是常用的两个: Date():使用当前的日期和时间初始化一个对象. Date(long millisec):从1970年01月01日00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒.如果运行 Java 程序的本地时区是北京时区(与格林威治时间相差 8 小

Java常用正则表达式验证工具类RegexUtils.java

原文:Java常用正则表达式验证工具类RegexUtils.java 源代码下载地址:http://www.zuidaima.com/share/1550463379442688.htm Java 表单注册常用正则表达式验证工具类,常用正则表达式大集合. 1. 电话号码 2. 邮编 3. QQ 4. E-mail 5. 手机号码 6. URL 7. 是否为数字 8. 是否为中文 9. 身份证 10. 域名 11. IP .... 常用验证应有尽有! 这的确是您从事 web 开发,服务器端表单验证

SpringMVC日期类型转换问题处理方法归纳

前言 我们在SpringMVC开发中,可能遇到比较多的问题就是前台与后 台实体类之间日期转换处理的问题了,说问题也不大,但很多人开发中经常会遇到这个问题,有时很令人头疼,有时间问题暴露的不是很明显,然后逐渐对问题进行 跟踪,会发现是日期类型转换失败"映射"不到对应的持久类的日期属性上造成的,由此我还特意写过一篇博文:SpringMVC中出现" 400 Bad Request "错误(用@ResponseBody处理ajax传过来的json数据转成bean)的解决方法

Oracle SQL日期比较和常用日期函数

一.oracle sql日期比较 在今天之前: select * from up_date where update < to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') select * from up_date where update <= to_date('2007-09-07 00:00:00','yyyy-mm-dd hh24:mi:ss') 在今天只后: select * from up_date where updat

21、java中和日期相关的类

一.Data及其常用API 1.简介 Java中的时间使用标准类库的java.util.Date,其表示特定的瞬间,精确到毫秒.是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点. 固定的时间点叫纪元(epoch),是UTC时间1970年 1月 1日 00:00:00  ,UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间. 因为Date的设计具有

(1)StringBuilder类和StringBuffer类 (2)日期相关的类 (3)集合框架 (4)List集合

1.StringBuilder类和StringBuffer类(查手册会用即可)1.1 基本概念 由于String类描述的字符串内容无法更改,若程序中出现大量类似的字符串时需要申请独立的内存空间单独保存,此时对内存空间的消耗比较大. 为了节省内存空间希望对字符串内容本身直接进行更改,则需要使用java.lang.StringBuilder类或者java.lang.StringBuffer类. 其中StringBuffer类是从jdk1.0开始存在,是一个线程安全的可变字符序列,效率比较低 其中St