• 时间帮助类


    public class DateHelper
        {
            #region/// <summary>
            /// 获取时间所处周的第一天
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetFirstDayOfWeek(DateTime date)
            {
                //星期一为第一天  
                var weekNow = Convert.ToInt32(date.DayOfWeek);
    
                //因为是以星期一为第一天,weekNow,要向前推6天。  
                weekNow = (weekNow == 0 ? (7 - 1) : (weekNow - 1));
                var dayDiff = (-1) * weekNow;
    
                //本周第一天  
                return date.AddDays(dayDiff);
            }
    
            /// <summary>
            /// 获取时间所处周的最后一天
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetLastDayOfWeek(DateTime date)
            {
                //星期天为最后一天  
                var lastWeekDay = Convert.ToInt32(date.DayOfWeek);
                lastWeekDay = lastWeekDay == 0 ? (7 - lastWeekDay) : lastWeekDay;
                var lastWeekDiff = (7 - lastWeekDay);
    
                //本周最后一天  
               return date.AddDays(lastWeekDiff);
            }
    
            #endregion
    
            #region/// <summary>
            /// 获取时间所处月的第一天
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetFirstDayOfMonth(DateTime date)
            {
                return date.AddDays(1 - date.Day);
            }
    
            /// <summary>
            /// 获取时间所处月的最后一天
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetLastDayOfMonth(DateTime date)
            {
                return date.AddDays(1 - date.Day).AddMonths(1).AddDays(-1);
            }
    
            #endregion
    
            #region 季度
    
            /// <summary>
            /// 获取时间所处季度的第一天
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetFirstDayOfQuarter(DateTime date)
            {
                return date.AddMonths(0 - (date.Month - 1) % 3).AddDays(1 - date.Day);
            }
    
            /// <summary>
            /// 获取时间所处季度的最后一天
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetLastDayOfQuarter(DateTime date)
            {
                return date.AddMonths(0 - (date.Month - 1) % 3).AddDays(1 - date.Day).AddMonths(3).AddDays(-1);
            }
    
            #endregion
    
            #region 半年
    
            /// <summary>
            /// 获取所处时间半年的第一天(上半年或下半年)
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetFirstDayOfHalfYear(DateTime date)
            {
                if (date.Date < new DateTime(date.Year, 7, 1))
                {
                    return new DateTime(date.Year, 1, 1);
                }
                return new DateTime(date.Year, 7, 1);
            }
    
            /// <summary>
            /// 获取所处时间半年的最后一天(上半年或下半年)
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetLastDayOfHalfYear(DateTime date)
            {
                if (date.Date < new DateTime(date.Year, 7, 1))
                {
                    return new DateTime(date.Year, 7, 1).AddDays(-1);
                }
                return new DateTime(date.Year, 1, 1).AddYears(1).AddDays(-1);
            }
    
            #endregion
    
            #region/// <summary>
            /// 获取时间所处年的第一天
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetFirstDayOfYear(DateTime date)
            {
                return new DateTime(date.Year, 1, 1);
            }
    
            /// <summary>
            /// 获取时间所处年的最后一天
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static DateTime GetLastDayOfYear(DateTime date)
            {
                return new DateTime(date.Year, 1, 1).AddYears(1).AddDays(-1);
            }
    
            #endregion
    
            #region 相差天数
    
            /// <summary>
            /// 两日期之间相差天数
            /// </summary>
            /// <param name="starTime"></param>
            /// <param name="endTime"></param>
            /// <returns></returns>
            public static int DifferDays(DateTime? starTime, DateTime? endTime)
            {
                var result = 0;
                if (starTime.HasValue && endTime.HasValue)
                {
                    return endTime.Value.Subtract(starTime.Value).Days;
                }
                return result;
            }
            #endregion
    
            #region 相差周数
    
            public static int DifferWeeks(DateTime? starTime, DateTime? endTime)
            {
                int result = 0;
                if (starTime.HasValue && endTime.HasValue)
                {
                    var lastTime = GetLastDayOfWeek(starTime.Value);
                    while (lastTime < endTime)
                    {
                        result++;
                        lastTime = lastTime.AddDays(7);
                    }
                }
                return result;
            }
    
            #endregion
    
            #region 相差月数
    
            /// <summary>
            /// 相差月数
            /// </summary>
            /// <param name="starTime"></param>
            /// <param name="endTime"></param>
            /// <returns></returns>
            public static int DifferMonths(DateTime? starTime, DateTime? endTime)
            {
                var result = 0;
                if (starTime.HasValue && endTime.HasValue)
                {
                    return (endTime.Value.Year - starTime.Value.Year) * 12 +
                           (endTime.Value.Month - starTime.Value.Month);
                }
                return result;
            }
    
            #endregion
    
            #region 相差季度
    
            /// <summary>
            /// 相差季度
            /// </summary>
            /// <param name="starTime"></param>
            /// <param name="endTime"></param>
            /// <returns></returns>
            public static int DifferQuarters(DateTime? starTime, DateTime? endTime)
            {
                var result = 0;
                if (starTime.HasValue && endTime.HasValue)
                {
                    var lastTime = GetLastDayOfQuarter(starTime.Value);
                    while (lastTime < endTime)
                    {
                        result++;
                        lastTime = lastTime.AddMonths(3);
                    }
                }
                return result;
            }
    
            #endregion
    
            #region 相差半年
    
            /// <summary>
            /// 相差半年
            /// </summary>
            /// <param name="starTime"></param>
            /// <param name="endTime"></param>
            /// <returns></returns>
            public static int DifferHalfYears(DateTime? starTime, DateTime? endTime)
            {
                var result = 0;
                if (starTime.HasValue && endTime.HasValue)
                {
                    var lastTime = GetLastDayOfHalfYear(starTime.Value);
                    while (lastTime < endTime)
                    {
                        result++;
                        lastTime = lastTime.AddMonths(6);
                    }
                }
                return result;
            }
    
            #endregion
    
            #region 相差年数
    
            /// <summary>
            /// 相差年数
            /// </summary>
            /// <param name="starTime"></param>
            /// <param name="endTime"></param>
            /// <returns></returns>
            public static int DifferYears(DateTime? starTime, DateTime? endTime)
            {
                var result = 0;
                if (starTime.HasValue && endTime.HasValue)
                {
                    return endTime.Value.Year - starTime.Value.Year;
                }
                return result;
            }
    
            #endregion
    
            #region 获取两个日期之间的所有时间集合
    
            /// <summary>
            /// 获取两个日期之间的所有时间集合
            /// </summary>
            /// <param name="beginDate"></param>
            /// <param name="endDate"></param>
            /// <returns></returns>
            public  static List<string> GetDateTimeList(DateTime beginDate, DateTime endDate)
            {
                var result = new List<string>();
                var dateTime = beginDate;
                while (endDate >= dateTime)
                {
                    var item = dateTime.ToString("yy-MM-dd");
                    result.Add(item);
                    dateTime = dateTime.AddDays(1);
                }
    
                return result;
            }
    
            #endregion
        }
  • 相关阅读:
    1242 斐波那契数列的第N项
    1256 乘法逆元
    1264 线段相交
    1265 四点共面
    Uva10881 Piotr's Ants
    hdu 5438 Ponds 长春网赛1002
    CodeForces 540D Bad Luck Island 概率dp
    hdu 1281 二分图残量增广
    hdu 2444判定二分图+最大匹配
    hdu 3416 Marriage Match IV
  • 原文地址:https://www.cnblogs.com/xiaoxiaomini/p/14434929.html
Copyright © 2020-2023  润新知