现在的位置: 首页 > 综合 > 正文

获取指定日期在该年(月)中属于第几个星期

2013年02月21日 ⁄ 综合 ⁄ 共 736字 ⁄ 字号 评论关闭

 在论坛回答了别人的帖子,就顺便在这里记录一下,当然网上已经有很多现成的方法,但我看了下还是觉得我的最简单,呵呵

/// <summary>
        /// 获取指定日期在该年中属于第几个星期
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public static int GetWeeksInYear(this DateTime date)
        {
            return GetWeeks(date.DayOfYear + (int)new DateTime(date.Year, 1, 1).DayOfWeek);
        }
        /// <summary>
        /// 获取指定日期在该月中属于第几个星期
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public static int GetWeeksInMonth(this DateTime date)
        {
            return GetWeeks(date.Day + (int)new DateTime(date.Year, date.Month, 1).DayOfWeek);
        }

        private static int GetWeeks(int days)
        {
            int weeks = days / 7;
            if (days % 7 != 0)
            {
                weeks++;
            }

            return weeks;
        }

思路是用当前日期跟第一天的日期差,并将每年(月)第一天向前补全一周,然后以此为基础进行周计算
这个是按照微软默认的标准星期天是每周的第一天,如果要转换成其他的话,比如周一是第一天,那只要把(int)new DateTime(date.Year, date.Month, 1).DayOfWeek这部分处理一下就可以了

抱歉!评论已关闭.