• 用于查询的日期类型转换帮助类


    应用场景举例

    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.最终效果

    三、代码及下载

    /*
     * 
     * 创建人:李林峰
     * 
     * 时  间:2009-05-04
     * 
     * 描  述:日期转换帮助类,常用于报表开发;
     * 可以转换成为:本日开始时间、本日结束时间、本周开始时间、本周结束时间、本月开始时间、本月结束时间、本年开始时间、本年结束时间
     * 
     */
    
    using System;
    
    namespace SongCai8.WebSite
    {
        /// <summary>
        /// 日期转换帮助类
        /// </summary>
        public static class DateTimeHelper
        {
            #region 日
            /// <summary>
            /// 将日期转换为本日的开始时间
            /// </summary>
            /// <param name="value">2001-01-01</param>
            /// <returns>2001-01-01 00:00:00</returns>
            public static DateTime ToDayStart(string value)
            {
                //转换成日期类型
                DateTime date = System.Convert.ToDateTime(value);
                //转换成短日期类型字符
                string shortDate = date.ToShortDateString();
                //返回日期类型
                return System.Convert.ToDateTime(shortDate);
            }
    
            /// <summary>
            /// 将日期转换为本日的开始时间
            /// </summary>
            /// <param name="value">任意时间</param>
            /// <returns>2001-01-01 00:00:00</returns>
            public static DateTime ToDayStart(DateTime value)
            {
                //转换成短日期类型字符
                string shortDate = value.ToShortDateString();
                //返回日期类型
                return System.Convert.ToDateTime(shortDate);
            }
    
            /// <summary>
            /// 将日期转换为本日的开始时间
            /// </summary>
            /// <param name="value">2001-01-01</param>
            /// <returns>2001-01-01 23:59:59</returns>
            public static DateTime ToDayEnd(string value)
            {
                //转换成日期类型
                DateTime date = System.Convert.ToDateTime(value);
                //转换成短日期类型
                DateTime shortDate = System.Convert.ToDateTime(date.ToShortDateString());
                //返回日期加一天减一秒
                return shortDate.AddDays(1).AddSeconds(-1);
            }
    
            /// <summary>
            /// 将日期转换为本日的结束时间
            /// </summary>
            /// <param name="value">任意时间</param>
            /// <returns>2001-01-01 23:59:59</returns>
            public static DateTime ToDayEnd(DateTime value)
            {
                //转换成短日期类型
                DateTime shortDate = System.Convert.ToDateTime(value.ToShortDateString());
                //返回日期加一天减一秒
                return shortDate.AddDays(1).AddSeconds(-1);
            }
            #endregion
    
            #region 周
            /// <summary>
            /// 将日期转换为本周的开始时间
            /// </summary>
            /// <param name="value">2001-01-01</param>
            /// <returns>2001-01-01 00:00:00</returns>
            public static DateTime ToWeekStart(string value)
            {
                //转换成日期类型
                DateTime date = System.Convert.ToDateTime(value);
                //根据当前时间取出该周周一的当前时间
                DateTime weekStart = ToWeekStart(date, date.Date.DayOfWeek);
                //转换成短日期类型字符
                string shortDate = weekStart.ToShortDateString();
                //返回日期类型
                return System.Convert.ToDateTime(shortDate);
            }
    
            /// <summary>
            /// 将日期转换为本周的开始时间
            /// </summary>
            /// <param name="value">任意时间</param>
            /// <returns>2001-01-01 00:00:00</returns>
            public static DateTime ToWeekStart(DateTime value)
            {
                //根据当前时间取出该周周一的当前时间
                DateTime weekStart = ToWeekStart(value, value.Date.DayOfWeek);
                //转换成短日期类型字符
                string shortDate = weekStart.ToShortDateString();
                //返回日期类型
                return System.Convert.ToDateTime(shortDate);
            }
    
            /// <summary>
            /// 将日期转换为本周的结束时间
            /// </summary>
            /// <param name="value">2001-01-01</param>
            /// <returns>2001-01-01 23:59:59</returns>
            public static DateTime ToWeekEnd(string value)
            {
                //转换成日期类型
                DateTime date = System.Convert.ToDateTime(value);
                //根据当前时间取出该周周末的当前时间
                DateTime weekEnd = ToWeekEnd(date, date.Date.DayOfWeek);
                //转换成短日期类型字符
                string shortDate = weekEnd.ToShortDateString();
                //返回日期加一天减一秒
                return Convert.ToDateTime(shortDate).AddDays(1).AddSeconds(-1);
            }
    
            /// <summary>
            /// 将日期转换为本周的结束时间
            /// </summary>
            /// <param name="value">任意时间</param>
            /// <returns>2001-01-01 23:59:59</returns>
            public static DateTime ToWeekEnd(DateTime value)
            {
                //根据当前时间取出该周周末的当前时间
                DateTime weekEnd = ToWeekEnd(value, value.Date.DayOfWeek);
                //转换成短日期类型字符
                string shortDate = weekEnd.ToShortDateString();
                //返回日期类型
                //返回日期加一天减一秒
                return Convert.ToDateTime(shortDate).AddDays(1).AddSeconds(-1);
            }
    
            /// <summary>
            /// 将日期转换为本周周一的某一时间
            /// </summary>
            /// <param name="date">将要转换的日期</param>
            /// <param name="week">传入日期的周的枚举类型</param>
            /// <returns>2001-01-01 12:12:12</returns>
            private static DateTime ToWeekStart(DateTime date, DayOfWeek week)
            {
                DateTime WeekStart = new DateTime();
                switch (week)
                {
                    case DayOfWeek.Monday:
                        WeekStart = date;
                        break;
                    case DayOfWeek.Tuesday:
                        WeekStart = date.AddDays(-1);
                        break;
                    case DayOfWeek.Wednesday:
                        WeekStart = date.AddDays(-2);
                        break;
                    case DayOfWeek.Thursday:
                        WeekStart = date.AddDays(-3);
                        break;
                    case DayOfWeek.Friday:
                        WeekStart = date.AddDays(-4);
                        break;
                    case DayOfWeek.Saturday:
                        WeekStart = date.AddDays(-5);
                        break;
                    case DayOfWeek.Sunday:
                        WeekStart = date.AddDays(-6);
                        break;
                }
                return WeekStart;
            }
    
            /// <summary>
            /// 将日期转换为本周周日的某一时间
            /// </summary>
            /// <param name="date">将要转换的日期</param>
            /// <param name="week">传入日期的周的枚举类型</param>
            /// <returns>2001-01-01 12:12:12</returns>
            private static DateTime ToWeekEnd(DateTime date, DayOfWeek week)
            {
                DateTime WeekStart = new DateTime();
                switch (week)
                {
                    case DayOfWeek.Monday:
                        WeekStart = date.AddDays(6);
                        break;
                    case DayOfWeek.Tuesday:
                        WeekStart = date.AddDays(5);
                        break;
                    case DayOfWeek.Wednesday:
                        WeekStart = date.AddDays(4);
                        break;
                    case DayOfWeek.Thursday:
                        WeekStart = date.AddDays(3);
                        break;
                    case DayOfWeek.Friday:
                        WeekStart = date.AddDays(2);
                        break;
                    case DayOfWeek.Saturday:
                        WeekStart = date.AddDays(1);
                        break;
                    case DayOfWeek.Sunday:
                        WeekStart = date;
                        break;
                }
                return WeekStart;
            }
    
            #endregion
    
            #region 月
            /// <summary>
            /// 将日期转换为本月的开始时间
            /// </summary>
            /// <param name="value">2001-01-01</param>
            /// <returns>2001-01-01 00:00:00</returns>
            public static DateTime ToMonthStart(string value)
            {
                //转换成日期类型
                DateTime date = System.Convert.ToDateTime(value);
                //根据年、月重新创建日期 
                return new DateTime(date.Year, date.Month, 1);
            }
    
            /// <summary>
            /// 将日期转换为本月的开始时间
            /// </summary>
            /// <param name="value">任意时间</param>
            /// <returns>2001-01-01 00:00:00</returns>
            public static DateTime ToMonthStart(DateTime value)
            {
                //根据年、月重新创建日期
                return new DateTime(value.Year, value.Month, 1);
            }
    
            /// <summary>
            /// 将日期转换为本月的结束时间
            /// </summary>
            /// <param name="value">2001-01-01</param>
            /// <returns>2001-01-31 23:59:59</returns>
            public static DateTime ToMonthEnd(string value)
            {
                //转换成日期类型
                DateTime date = System.Convert.ToDateTime(value);
                //根据年、月重新创建日期 
                DateTime monthStart = new DateTime(date.Year, date.Month, 1);
                //创建结束日期
                return monthStart.AddMonths(1).AddSeconds(-1);
            }
    
            /// <summary>
            /// 将日期转换为本月的结束时间
            /// </summary>
            /// <param name="value">任意时间</param>
            /// <returns>2001-01-31 23:59:59</returns>
            public static DateTime ToMonthEnd(DateTime value)
            {
                //根据年、月重新创建日期 
                DateTime monthStart = new DateTime(value.Year, value.Month, 1);
                //创建结束日期
                return monthStart.AddMonths(1).AddSeconds(-1);
            }
            #endregion
    
            #region 年
            /// <summary>
            /// 将日期转换为本年的开始时间
            /// </summary>
            /// <param name="value">2001-01-01</param>
            /// <returns>2001-01-01 00:00:00</returns>
            public static DateTime ToYearStart(string value)
            {
                //转换成日期类型
                DateTime date = System.Convert.ToDateTime(value);
                //根据年、月重新创建日期 
                return new DateTime(date.Year, 1, 1);
            }
    
            /// <summary>
            /// 将日期转换为本年的开始时间
            /// </summary>
            /// <param name="value">任意时间</param>
            /// <returns>2001-01-01 00:00:00</returns>
            public static DateTime ToYearStart(DateTime value)
            {
                //根据年、月重新创建日期 
                return new DateTime(value.Year, 1, 1);
            }
    
            /// <summary>
            /// 将日期转换为本年的结束时间
            /// </summary>
            /// <param name="value">2001-01-01</param>
            /// <returns>2001-12-31 23:59:59</returns>
            public static DateTime ToYearEnd(string value)
            {
                //转换成日期类型
                DateTime date = System.Convert.ToDateTime(value);
                //根据年、月重新创建日期 
                DateTime yearStart = new DateTime(date.Year, 1, 1);
                //创建结束日期
                DateTime yearEnd = new DateTime(date.Year, 1, 1).AddYears(1).AddSeconds(-1);
                return yearEnd;
            }
    
            /// <summary>
            /// 将日期转换为本年的结束时间
            /// </summary>
            /// <param name="value">任意时间</param>
            /// <returns>2001-12-31 23:59:59</returns>
            public static DateTime ToYearEnd(DateTime value)
            {
                //根据年、月重新创建日期 
                DateTime yearStart = new DateTime(value.Year, 1, 1);
                //创建结束日期
                return new DateTime(value.Year, 1, 1).AddYears(1).AddSeconds(-1);
            }
            #endregion
        }
    }
  • 相关阅读:
    那些年搞不懂的多线程、同步异步及阻塞和非阻塞(一)---多线程简介
    java中IO流详细解释
    Java IO流学习总结
    MySQL数据库中索引的数据结构是什么?(B树和B+树的区别)
    使用Redis存储Nginx+Tomcat负载均衡集群的Session
    Redis 3.2.4集群搭建
    JDK1.8源码分析之HashMap
    java HashMap和LinkedHashMap区别
    Java中原子类的实现
    多线程-传统定时任务
  • 原文地址:https://www.cnblogs.com/joeylee/p/3442010.html
Copyright © 2020-2023  润新知