.net如何根据年月算出这个月有几个周,分别是几号到几号,意思是
第一个周 (几号——几号)
第二个周 (几号——几号)
......
希望高手给我一个方法 谢谢

解决方案 »

  1.   


    --本月的第一个星期一   
      select   DATEADD(wk,   
      DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),   0)
      

  2.   

    using System;namespace ConsoleApplication1
    {
        internal class Program
        {
            private static void Main()
            {
                DateTime day = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                DateTime lastDay = new DateTime(DateTime.Now.Year, DateTime.Now.Month + 1, 1).AddDays(-1);
                int i = 0;
                do
                {
                    Console.WriteLine("Week {0}:", ++i);
                    while (day.DayOfWeek != DayOfWeek.Sunday && day <= lastDay)
                    {
                        Console.WriteLine("\t{0} is {1}", day.ToShortDateString(), day.DayOfWeek);
                        day = day.AddDays(1);
                    }
                    if (day <= lastDay)
                    {
                        Console.WriteLine("\t{0} is {1}", day.ToShortDateString(), day.DayOfWeek);
                        day = day.AddDays(1);
                    }
                } while (day <= lastDay);            Console.ReadLine();
            }
        }
    }
      

  3.   


    没有什么常理,要看你的规则int year = Convert.ToInt32(textBox1.Text);
    int month = Convert.ToInt32(textBox2.Text);
    DateTime weekStart = new DateTime(year, month, 1);
    DateTime monEnd = weekStart.AddMonths(1).AddDays(-1);
    int i = 1;
    int dayOfWeek = Convert.ToInt32(weekStart.DayOfWeek.ToString("d"));
    DateTime weekEnd = dayOfWeek == 0 ? weekStart : weekStart.AddDays(7 - dayOfWeek);  //该月第一周结束日期
    richTextBox2.Text += "第" + i + "周起始日期: " + weekStart.ToShortDateString() + "   结束日期: " + weekEnd.ToShortDateString() + "\n";
    while (weekEnd.AddDays(1) < monEnd)
    {
        i++;
        weekStart = weekEnd.AddDays(1);
        weekEnd = weekEnd.AddDays(7) > monEnd ? monEnd : weekEnd.AddDays(7);
        richTextBox2.Text += "第" + i + "周起始日期: " + weekStart.ToShortDateString() + "   结束日期: " + weekEnd.ToShortDateString() + "\n";
    }
    richTextBox2.Text += year + "年" + month + "月共有" + i + "周\n";其实就是AddDays和AddMonths的组合,简单的写了下,懒得做优化了,或者参考C#根据当前时间确定日期范围(本周、本月、本季度、本年度) 
      

  4.   


            private void ShowWeekSinMonth(int y, int m)
            {
                int days = DateTime.DaysInMonth(y, m);
                int weeks =1;
                DateTime FirstDayOfMonth = DateTime.Parse(y + "-" + m + "-1");            DateTime FirstDayOfWeek = FirstDayOfMonth;
                while (FirstDayOfWeek.Month  == m)
                {
                    Response.Write("第" + weeks + "周:");
                    Response.Write(FirstDayOfWeek.ToString("yyyy年MM月dd日"));
                    Response.Write("--");
                    DateTime LastDayOfWeek;
                    if (FirstDayOfWeek.Day + 7 > days)
                    {
                        LastDayOfWeek = FirstDayOfWeek.AddDays(days - FirstDayOfWeek.Day);
                    }
                    else
                    {
                        LastDayOfWeek = FirstDayOfWeek.AddDays(7 - getWeekDay(FirstDayOfWeek) -1);
                    }
                    Response.Write(LastDayOfWeek.ToString("yyyy年MM月dd日"));
                    Response.Write("<BR>");
                    weeks += 1;
                    FirstDayOfWeek = LastDayOfWeek.AddDays(1);
                }
            }
            private int getWeekDay(DateTime d)
            { 
                return (d.Day+2*d.Month+3*(d.Month+1)/5+d.Year+d.Year/4-d.Year/100+d.Year/400 + 1) % 7;
            }
      

  5.   

    [code=BatchFile]第1周:2009年05月01日--2009年05月02日
    第2周:2009年05月03日--2009年05月09日
    第3周:2009年05月10日--2009年05月16日
    第4周:2009年05月17日--2009年05月23日
    第5周:2009年05月24日--2009年05月30日
    第6周:2009年05月31日--2009年05月31日[/code]
      

  6.   

    http://www.lhdwy.com.cn/aspnet/20090404/0904041101255487.html
      

  7.   


                if (year % 4 == 0 && year % 100 != 0)
                { 
                    _mDay[1] = 29;
                }
                else if (year % 400 == 0)
                {
                    _mDay[1] = 29;
                }            //total week of the month
                int sum;
                DateTime[,] weekArray;
                
                DateTime dt = new DateTime(year, month, 1);
                
                if (dt.DayOfWeek != DayOfWeek.Sunday)
                {
                    int _week = (int)dt.DayOfWeek;                //how many day this week last
                    int _day = 6 - _week;                //how many day this month last
                    int lastDay = _mDay[month - 1] - (_day + 1);                if (lastDay / 7 == 0) 
                    { 
                        sum = (lastDay / 7) + 1; 
                    }                 else
                    {
                        sum = (lastDay / 7) + 2;
                    }
                    weekArray = new DateTime[sum, 2];
                    weekArray[0, 0] = dt;
                    weekArray[0, 1] = dt.AddDays(_day);                for (int i = 1; i < sum; i++)
                    {
                        weekArray[i, 0] = weekArray[i - 1, 1].AddDays(1);
                        weekArray[i, 1] = weekArray[i - 1, 1].AddDays(7);
                    }            }
                else
                {
                    int lastDay = _mDay[month - 1];                if (lastDay / 7 == 0)
                    {
                        sum = (lastDay / 7); 
                    }
                    else 
                    {
                        sum = (lastDay / 7) + 1;
                    }                weekArray = new DateTime[sum, 2];
                    weekArray[0, 0] = dt;
                    weekArray[0, 1] = dt.AddDays(6);                for (int i = 1; i < sum; i++)
                    {
                        weekArray[i, 0] = weekArray[i - 1, 1].AddDays(1);
                        weekArray[i, 1] = weekArray[i - 1, 1].AddDays(7);
                    }
                }
                BeginDate = weekArray[week - 1, 0];
                EndDate = weekArray[week - 1, 1];
      

  8.   

    datepart(week,getdate())只是取得是本年的第几周,如果是本月的第几周,用:   
        
      select   datepart(week,getdate())-datepart(week,getdate()-day(getdate()))+1