当前位置:编程学习 > C#/ASP.NET >>

计算某年有多少个周?请教高手!!求代码!

        int year年, month月;  
  
        //年和月是下拉框绑定好了,今年第几周也是个DropDownList3,当我选择年,就把周数显示出来,再选月,就把他在那个月的第几周显示出来。知道一年有52和53周,但要显示在DropDownList里面

        year = int.Parse(DropDownList1.SelectedValue);
        month = int.Parse(DropDownList2.SelectedValue);
        DateTime weekstart = new DateTime(year, month, 1);
--------------------编程问答-------------------- http://www.cnblogs.com/imsong/articles/1115167.html

http://www.cnblogs.com/halia/archive/2010/04/05/1704761.html

http://zhidao.baidu.com/question/135602256.html --------------------编程问答-------------------- “第”几周,实际上一年的第一周不是1月1日开始的。因此如果上楼有相应的索引的话,你可以看看如何简单地计算每年1月1日所在的那一个周的周一的日期,然后想知道某月的1日或者当年的最后一天是第几周都要跟这个周一的日期相减(而不是跟当年的1月1日相减)。 --------------------编程问答-------------------- select datepart(wk,'2011-12-31')
--------------------编程问答-------------------- sq1 server 2005 字自定义表值函数,返回一年的周的结果 周,周第一天日期,。。

create FUNCTION   [dbo].[Func] ()
RETURNS TABLE 
AS
RETURN 
-- select * from week,wkitem where wkitem.dt between  dt1 and dt2 and wkitem.id=weekid
with z  as ( 
select zid=1,datediff(wk,ksrq,jsrq)+1 as zs ,datename(weekday,ksrq) as wkname,DATEADD(wk, 
DATEDIFF(wk,0,ksrq), -1) as dt1
from xq where currentxq=1
union all
select zid=zid+1,zs, datename(weekday,dt1+7), dt1+7  from z  where zid<zs
)
select * from z --------------------编程问答--------------------         /// <summary>
        /// 根据所在年月返回天数
        /// </summary>
        /// <param name="year">年</param>
        /// <param name="month">月</param>
        /// <returns></returns>
        protected int GetMonthDayCount(int year, int month)
        {
            return DateTime.DaysInMonth(year, month);
        }

        /// <summary>
        /// 根据日期返回星期几
        /// </summary>
        /// <param name="dTime">日期时间 格式:yyyy-MM-dd</param>
        /// <returns></returns>
        public int GetWeekDay(DateTime dTime)
        {
            //确定星期几
            int index = (int)dTime.DayOfWeek;
            return index;
        }

        /// <summary>
        /// 获得日期所在年第几周
        /// </summary>
        /// <param name="curDay">日期 格式:yyyy-MM-dd</param>
        /// <returns></returns>
        protected int WeekOfYear(DateTime curDay)
        {
            int firstdayofweek = Convert.ToInt32(Convert.ToDateTime(curDay.Year.ToString() + "-" + "1-1").DayOfWeek);
            int days = curDay.DayOfYear;
            int daysOutOneWeek = days - (7 - firstdayofweek);
            if (daysOutOneWeek <= 0)
            {
                return 1;
            }
            else
            {
                int weeks = daysOutOneWeek / 7;
                if (daysOutOneWeek % 7 != 0)
                    weeks++;
                return weeks + 1;
            }
        } --------------------编程问答-------------------- 马上代码一大堆 --------------------编程问答-------------------- 都不是我要的答案:我要求某个月是年的第几周?当我下拉框选择5月份,就要显示5月份在当年的多少周 --------------------编程问答-------------------- 找到5月1日与1月1日之间相差多少天,模7取余,看1月1号是星期几,比如星期5,余数为3,那么就是(5+3)%7了。。。 --------------------编程问答--------------------
引用 7 楼 liu2184609 的回复:
都不是我要的答案:我要求某个月是年的第几周?当我下拉框选择5月份,就要显示5月份在当年的多少周

5月1号和5月31 是一周么?

--------------------编程问答--------------------
/// <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;
        }


你要5月有第几周

简单的很,你把5月1日传进去,得出一个开始周startWeeks,再把5月31日传进去,得到一个结束周endWeeks
然后
for(int = startWeeks;i<=endWeeks;i++)
{
   //5月在这年中对应的周都在了,然后你该干嘛就干嘛
}
--------------------编程问答-------------------- 只选择年和月的话不能确定周 --------------------编程问答--------------------
引用 10 楼 starfd 的回复:
C# code

/// <summary>
        /// 获取指定日期在该年中属于第几个星期
        /// </summary>
        /// <param name="date"></param>
        /// <returns></returns>
        public static int GetWeeksInYear(this……

再加上个日期呢,求高手完整代码,好结分了 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 12 楼 liu2184609 的回复:
再加上个日期呢,求高手完整……


什么意思???什么叫再加上个日期???不明白啊
this是3.5的扩展方法,如果不知道怎么用可以Baidu,也可以直接去掉 --------------------编程问答-------------------- 代码太多了,呵呵,专心看看
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,