.NET C# DateTime日期工具类

1.工具类

using System;
using System.Globalization;

namespace Infrastructure
{
    public static class DateTimeExtensions
    {
        /// <summary>
        /// 当前时间
        /// </summary>
        public static DateTime CurrentDateTime = DateTime.Now;

        /// <summary>
        /// 本周周一
        /// </summary>
        public static DateTime StartWeek = CurrentDateTime.AddDays(1 - Convert.ToInt32(CurrentDateTime.DayOfWeek.ToString("d")));

        /// <summary>
        /// 本周周日
        /// </summary>
        public static DateTime EndWeek = StartWeek.AddDays(6);

        /// <summary>
        /// 本月月初
        /// </summary>
        public static DateTime StartMonth = CurrentDateTime.AddDays(1 - CurrentDateTime.Day);

        /// <summary>
        /// 本月月末
        /// </summary>
        public static DateTime EndMonth = StartMonth.AddMonths(1).AddDays(-1);

        /// <summary>
        /// 本季度初
        /// </summary>
        public static DateTime StartQuarter = CurrentDateTime.AddMonths(0 - (CurrentDateTime.Month - 1) % 3).AddDays(1 - CurrentDateTime.Day);

        /// <summary>
        /// 本季度末
        /// </summary>
        public static DateTime EndQuarter = StartQuarter.AddMonths(3).AddDays(-1);

        /// <summary>
        /// 本年年初
        /// </summary>
        public static DateTime StartYear = new DateTime(CurrentDateTime.Year, 1, 1);

        /// <summary>
        /// 本年年末
        /// </summary>
        public static DateTime EndYear = new DateTime(CurrentDateTime.Year, 12, 31);

        /// <summary>
        /// 计算本周的周一日期
        /// </summary>
        public static DateTime GetMondayDate()
        {
            return GetMondayDate(DateTime.Now);
        }

        /// <summary>
        /// 计算本周的周日日期
        /// </summary>
        public static DateTime GetSundayDate()
        {
            return GetSundayDate(DateTime.Now);
        }

        /// <summary>
        /// 计算某周起始日期(周一的日期)
        /// </summary>
        /// <param name="somedate">该周中任意一天</param>
        /// <returns>返回周一日期,后面的具体时、分、秒和传入值相等</returns>
        public static DateTime GetMondayDate(DateTime somedate)
        {
            int i = somedate.DayOfWeek - DayOfWeek.Monday;
            if (i == -1) i = 6;// i值 > = 0 ,因为枚举原因,sunday排在最前,此时sunday-monday=-1,必须+7=6。
            TimeSpan ts = new TimeSpan(i, 0, 0, 0);
            return somedate.Subtract(ts);
        }

        /// <summary>
        /// 计算某周结束日期(周日的日期)
        /// </summary>
        /// <param name="somedate">该周中任意一天</param>
        /// <returns>返回周日日期,后面的具体时、分、秒和传入值相等</returns>
        public static DateTime GetSundayDate(DateTime somedate)
        {
            int i = somedate.DayOfWeek - DayOfWeek.Sunday;
            if (i != 0) i = 7 - i;// 因为枚举原因,sunday排在最前,相减间隔要被7减。
            TimeSpan ts = new TimeSpan(i, 0, 0, 0);
            return somedate.Add(ts);
        }

        public static DateTime ToStartDate(this DateTime date)
        {
            var str = date.ToString("yyyy-MM-dd") + " 00:00:00";
            return DateTime.Parse(str);
        }
        public static DateTime ToStartDate(this DateTime date, string time)
        {
            var str = date.ToString("yyyy-MM-dd") + " " + time;
            return DateTime.Parse(str);
        }
        public static DateTime ToEndDate(this DateTime date)
        {
            var str = date.ToString("yyyy-MM-dd") + " 23:59:59";
            return DateTime.Parse(str);
        }
        public static DateTime ToEndDate(this DateTime date, string time)
        {
            var str = date.ToString("yyyy-MM-dd") + " " + time;
            return DateTime.Parse(str);
        }
        /// <summary>
        /// 将字符串"2016-05-12"转换为DateTime类型"2016-05-12 00:00:00"
        /// </summary>
        public static DateTime ToStartDate(string date)
        {
            DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
            dateTimeFormatInfo.ShortDatePattern = "yyyy-MM-dd";
            DateTime result = Convert.ToDateTime(date, dateTimeFormatInfo);
            return result.ToStartDate();
        }

        public static DateTime ToStartDate(string date, string time)
        {
            DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
            dateTimeFormatInfo.ShortDatePattern = "yyyy-MM-dd";
            DateTime result = Convert.ToDateTime(date, dateTimeFormatInfo);
            return result.ToStartDate(time);
        }

        /// <summary>
        /// 将字符串"2016-05-12"转换为DateTime类型"2016-05-12 23:59:59"
        /// </summary>
        public static DateTime ToEndDate(string date)
        {
            DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
            dateTimeFormatInfo.ShortDatePattern = "yyyy-MM-dd";
            DateTime result = Convert.ToDateTime(date, dateTimeFormatInfo);
            return result.ToEndDate();
        }
        public static DateTime ToEndDate(string date, string time)
        {
            DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
            dateTimeFormatInfo.ShortDatePattern = "yyyy-MM-dd";
            DateTime result = Convert.ToDateTime(date, dateTimeFormatInfo);
            return result.ToStartDate(time);
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/jeff151013/p/11739536.html