某一天是当月的第几周,获取当月共有几周,获取某一周是的开始时间和结束时间

         /// <summary>
        /// 某一天是当月的第几周。
        /// </summary>
        /// <param name="dt">时间,当天</param>
        /// <returns></returns>
        public static int getWeek(DateTime dt)
        {
            int currentWeek = 0;
            //构造当前月的1号
            DateTime dd = new DateTime(dt.Year, dt.Month, 1);
            //获得当前月1号是一个星期的第几天
            int week = (int)dd.DayOfWeek;
            //用来存储,当第一天不是星期天时,这个星期还有多少天
            int t1 = 0;
            if (week > 0)
            {
                //如果不是一个星期日
                t1 = 7 - week;
            }
            int t2 = (dt.Day - t1) % 7;
            int t3 = 0;
            if (t2 != 0)
            {
                t3 = (dt.Day - t1) / 7 + 1;
            }
            else
            {
                t3 = (dt.Day - t1) / 7;
            }
            currentWeek += t3;
            return currentWeek;
        }
        /// <summary>
        /// 获取当月共有几周,从第一个星期一开始计算
        /// </summary>
        /// <param name="dt">时间主要是本月就行</param>
        /// <returns></returns>
        public static int getWeekCount(DateTime dt)
        {
            int currentWeek = 0;
            //构造当前月的1号
            DateTime dd = new DateTime(dt.Year, dt.Month, 1);
            int days = DateTime.DaysInMonth(dt.Year, dt.Month);
            //获得当前月1号是一个星期的第几天
            int week = (int)dd.DayOfWeek;
            //用来存储,当第一天不是星期天时,这个星期还有多少天
            int t1 = 0;
            if (week > 0)
            {
                //如果不是一个星期日 得出剩下的天数
                t1 = 7 - week;
            }
            //减掉这周的天数
            int t2 = (days - t1) % 7;
            int t3 = 0;
            if (t2 != 0)
            {
                t3 = (days - t1) / 7 + 1;
            }
            else
            {
                t3 = (days - t1) / 7;
            }
            currentWeek += t3;
            return currentWeek;
        }
        /// <summary>
        /// 获取某一周是的开始时间和结束时间,return BeginDay + "," + EndDay + "," + Month+","+Year;
        /// </summary>
        /// <param name="dt">时间</param>
        /// <param name="week">第几周,第一周是这个月的第一个周日开始计算</param>
        /// <returns></returns>
        public static string getDay(DateTime dt, int week)
        {
            //构造当前月的1号
            DateTime dd = new DateTime(dt.Year, dt.Month, 1);
            int days = DateTime.DaysInMonth(dt.Year, dt.Month);
            //获得当前月1号是一个星期的第几天
            int day = (int)dd.DayOfWeek;
            //用来存储,当第一天不是星期天时,这个星期还有多少天
            int t1 = 0;
            if (day > 0)
            {
                //如果不是一个星期日 得出剩下的天数
                t1 = 7 - day;
            }
            day = t1 + week * 7;
            int BeginDay = day - 6;
            int Month = dt.Month;
            int EndDay = day;
            int Year = dt.Year;
            //如果是月底
            if (day > days)
            {
                if (Month == 12)//最后一个月存在跨年的可能。
                {
                    Year++;
                    Month = 1;
                }
                else
                {
                    Month++;
                }
                EndDay = day - days;
            }

            return BeginDay + "," + EndDay + "," + Month + "," + Year;
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值