zoukankan      html  css  js  c++  java
  • 时间帮助类

    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
        }
  • 相关阅读:
    10 种保护 Spring Boot 应用的绝佳方法
    Redis 如何分析慢查询操作?
    Spring Boot 主类及目录结构介绍
    Redis 再牛逼,也得设置密码!!
    Spring Data Redis 详解及实战一文搞定
    Spring Boot Redis Cluster 实战干货
    超详细的 Redis Cluster 官方集群搭建指南
    Redis Linux 安装运行实战全记录
    hdu 4790 Just Random (思路+分类计算+数学)
    poj 1328 Radar Installation(贪心)
  • 原文地址:https://www.cnblogs.com/xiaoxiaomini/p/14434929.html
Copyright © 2011-2022 走看看