C#里的周计算,第几周,一周的开始......

来源:互联网 发布:excel 数据统计分析 编辑:程序博客网 时间:2024/05/02 04:18

 public class GetWeekIndex    {        //如果12月31号与下一年的1月1好在同一个星期则算下一年的第一周        public static int Excute(DateTime dTime)        {            try            {                //确定此时间在一年中的位置                var dayOfYear = dTime.DayOfYear;                //当年第一天                var tempDate = new DateTime(dTime.Year, 1, 1);                //确定当年第一天                var tempDayOfWeek = (int)tempDate.DayOfWeek;                tempDayOfWeek = tempDayOfWeek == 0 ? 7 : tempDayOfWeek;                //确定星期几                var index = (int)dTime.DayOfWeek;                index = index == 0 ? 7 : index;                //当前周的范围                DateTime retStartDay = dTime.AddDays(-(index - 1));                DateTime retEndDay = dTime.AddDays(7 - index);                //确定当前是第几周                var weekIndex = (int)Math.Ceiling(((double)dayOfYear + tempDayOfWeek - 1) / 7);                if (retStartDay.Year < retEndDay.Year)                {                    weekIndex = 1;                }                return weekIndex;            }            catch (Exception ex)            {                throw new Exception(ex.Message);            }        }        public static int Excute(string strDate)        {            try            {                //需要判断的时间                DateTime dTime = Convert.ToDateTime(strDate);                return Excute(dTime);            }            catch (Exception ex)            {                throw new Exception(ex.Message);            }        }    }
原文链接


下面补充一些:

        /// <summary>        /// 用年份和第几周来获得一周开始和结束的时间,这里用星期一做开始。        /// </summary>        public static void GetWeek(int year, int weekNum, out DateTime weekStart, out DateTime weekeEnd)        {            var dateTime = new DateTime(year, 1, 1);            dateTime = dateTime.AddDays(7 * weekNum);            weekStart = dateTime.AddDays(-(int)dateTime.DayOfWeek + (int)DayOfWeek.Monday);            weekeEnd = dateTime.AddDays((int)DayOfWeek.Saturday - (int)dateTime.DayOfWeek + 1);        }

        /// <summary> 求某年有多少周        /// </summary>        public static int GetYearWeekCount(int year)        {            var dateTime = DateTime.Parse(year + "-01-01");            var firstDayOfWeek = Convert.ToInt32(dateTime.DayOfWeek);//得到该年的第一天是周几             if (firstDayOfWeek == 1)            {                var countDay = dateTime.AddYears(1).AddDays(-1).DayOfYear;                var countWeek = countDay / 7 + 1;                return countWeek;            }            else            {                var countDay = dateTime.AddYears(1).AddDays(-1).DayOfYear;                var countWeek = countDay / 7 + 2;                return countWeek;            }        }



 /// <summary>        /// 求当前日期是一年的中第几周        /// </summary>        public static int WeekOfYear(DateTime todayTime)        {            var firstdayofweek = Convert.ToInt32(Convert.ToDateTime(todayTime.Year.ToString(CultureInfo.InvariantCulture) + "- " + "1-1 ").DayOfWeek);            var days = todayTime.DayOfYear;            var daysOutOneWeek = days - (7 - firstdayofweek);            if (daysOutOneWeek <= 0)            {                return 1;            }            var weeks = daysOutOneWeek/7;            if (daysOutOneWeek%7 != 0)                weeks++;            return weeks + 1;        }



        /// <summary>        /// 当前月有多少天        /// </summary>        public static int HowMonthDay(int year, int month)        {            int next_month;            int next_year;            if (month < 12)            {                next_month = month + 1;                next_year = year;            }            else            {                next_month = 1;                next_year = year + 1;            }            DateTime dt1 = Convert.ToDateTime(year + "-" + month + "-1");            DateTime dt2 = Convert.ToDateTime(next_year + "-" + next_month + "-1");            TimeSpan diff = dt2 - dt1;            return diff.Days;        }       



原创粉丝点击