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

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

/// <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这部分处理一下就可以了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值