根据日期计算属于学期的第几周

PS:周一为一周的开始时间

 

#region  根据开学第一天和某天,得到某天属于这学期的第几周
        /// <summary>
        /// 根据开学第一天和某天,得到某天属于这学期的第几周
        /// </summary>
        /// <param name="firstDate">开学的第一天</param>
        /// <param name="secondDate">要计算的某天</param>
        /// <returns></returns>
        public static int GetWeekNoByDate(DateTime firstDate, DateTime secondDate)
        {
            if (secondDate < firstDate)
            {
                throw new Exception("后面的日期不能小于开学日期");
            }
            int weekNo = 1;
            //周天 0  周一 1 周二 2 周三 3 周四 4 周五 5 周六 6
            int firstDayOfWeek = (int)firstDate.DayOfWeek;
            int firstWeekDays = 0;
            if (firstDayOfWeek > 0)
            {
                firstWeekDays = 7 - firstDayOfWeek;
            }
            //得到第一周的最后一天
            DateTime firstWeekLastDay = firstDate.AddDays(firstWeekDays);
            if (secondDate <= firstWeekLastDay)
            {
                return weekNo;
            }
            else
            {
                int totalDays = secondDate.DayOfYear - firstWeekLastDay.AddDays(1).DayOfYear;
                int addWeekNo = totalDays / 7;  //周数
                weekNo += addWeekNo + 1;
                return weekNo;
            }
        }
        #endregion 

 

posted @ 2023-05-27 17:08  狼窝窝  阅读(324)  评论(0)    收藏  举报