不明白你的意思。
通过 日期变量.Month可以取得日期所在的月份。
.DayOfWeek 可以取得日期所在的星期

解决方案 »

  1.   

    如:
    int i,j;
    i=System.Convert.ToInt32(this.textBox1.Text.Substring(0,1));
    j=System.Convert.ToInt32(this.textBox1.Text.Substring(1,1));
    DateTime dt;
    dt=System.Convert.ToDateTime(System.DateTime.Now.ToString("yyyy-MM-01"));
    int n=System.Convert.ToInt32(dt.DayOfWeek);
                n=(i-1)*7+j-n;
    this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
      

  2.   

    不是这样子,我是想取得一个DateTime,比如说母亲节是5月第2个星期日,
    我用这个函数参数是5月1日或者随便一个当月的DateTime,i=2,j=0,
    得出今年的母亲节就是2004-05-09
      

  3.   

    public static DateTime(Datetime d,int i,int j)
    {DateTime dt;
    dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01"));
    int n=System.Convert.ToInt32(dt.DayOfWeek);
                n=(i-1)*7+j-n;
    this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
    }
      

  4.   

    public enum CN_Week
    {
    星期五 = DayOfWeek.Friday,
    星期一 = DayOfWeek.Monday,
    星期六 = DayOfWeek.Saturday,
    星期日 = DayOfWeek.Sunday,
    星期四 = DayOfWeek.Thursday,
    星期二 = DayOfWeek.Tuesday,
    星期三 = DayOfWeek.Wednesday,}
    private void button1_Click(object sender, System.EventArgs e)
    {
    CN_Week week ;
    DateTime dt = DateTime.Now; DateTime firstDay = new DateTime(dt.Year,dt.Month,1);

    TimeSpan ts = dt-firstDay;
    int days = ts.Days; int ws = days/7 + 1;

    week = (CN_Week)dt.DayOfWeek; MessageBox.Show(dt.ToString("yyyy年MM月dd日") + " 是 " + dt.ToString("yyyy年MM月") + "的第 " + ws.ToString() + " 周的 " + week.ToString());
    }
      

  5.   

    public static DateTime(Datetime d,int i,int j)
    {DateTime dt;
    dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01"));
    int n=System.Convert.ToInt32(dt.DayOfWeek);
                n=(i-1)*7+j-n;
    this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
    }
      

  6.   

    又改了一下:
    public enum CN_Week
    {
    星期五 = DayOfWeek.Friday,
    星期一 = DayOfWeek.Monday,
    星期六 = DayOfWeek.Saturday,
    星期日 = DayOfWeek.Sunday,
    星期四 = DayOfWeek.Thursday,
    星期二 = DayOfWeek.Tuesday,
    星期三 = DayOfWeek.Wednesday,}
    private string GetWeekString(DateTime date)
    {
    DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间
    int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}";
    result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result;
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    MessageBox.Show( this.GetWeekString(DateTime.Now)); return;
    }
      

  7.   

    更正:
    public static DateTime(Datetime d,int i,int j)
    {DateTime dt;
    dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01"));
    int n=System.Convert.ToInt32(dt.DayOfWeek);
               int n=System.Convert.ToInt32(dt.DayOfWeek);
    if (j-n>=0)
                    n=(i-1)*7+j-n+1;
    else
     n=i*7+j-n+1; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
    }
      

  8.   

    DateTime.DayOfWeek 属性 它指示星期几。该属性值的范围从零(表示星期日)到六(表示星期六)。Calendar.GetWeekOfYear 方法 返回年中包括指定 DateTime 中的日期的星期。public virtual int GetWeekOfYear(
       DateTime time,
       CalendarWeekRule rule,
       DayOfWeek firstDayOfWeek
    );
      

  9.   

    To hbxtlhx(下着春雨的天) :
    很感谢你的热心,但是你写的完全不对题啊,我并非要得到这天是第几周的星期几
    而是要已知第几个星期几来求出日期,如上贴,求母亲节几月几号?
      

  10.   

    To楼主,我的更正后的算法是正确的:
    public static DateTime(Datetime d,int i,int j)
    {DateTime dt;
    dt=System.Convert.ToDateTime(d.ToString("yyyy-MM-01"));
    int n=System.Convert.ToInt32(dt.DayOfWeek);
               int n=System.Convert.ToInt32(dt.DayOfWeek);
    if (j-n>=0)
                    n=(i-1)*7+j-n+1;
    else
     n=i*7+j-n+1; this.label1.Text=dt.ToString("yyyy-MM-"+n.ToString());
    }
      

  11.   

    无聊写了一个练手……public static DateTime myDate(DateTime d,int i,int j)
    {
    if(i>=1 && i<=4)
    {
    int count=0; DateTime No1=Convert.ToDateTime(d.Year.ToString()+"-"+d.Month.ToString()+"-1"); for(DateTime tmp=No1;tmp<No1.AddMonths(1);tmp=tmp.AddDays(1))
    {
    if(Convert.ToInt32(tmp.DayOfWeek)==j)
    {
                            count++;
    tmp=tmp.AddDays(6);
    } if(count==i)
    {
    return tmp.AddDays(-6);
    }
            }
    } if(i==5)
    {
                    DateTime No1=Convert.ToDateTime(d.AddMonths(1).Year.ToString()+"-"+d.AddMonths(1).Month.ToString()+"-1");
    for(DateTime tmp=No1.AddDays(-1);tmp>No1.AddMonths(-1);tmp=tmp.AddDays(-1))
    {
    if(Convert.ToInt32(tmp.DayOfWeek)==j)
    {
    return tmp;
    }
    }
    } return d; //失败 }
      

  12.   

    wuzhijie(阿杰) 的代码比我精简……不过好像有点bug,n会有大于31的情况没有考虑……其他还不知道
      

  13.   

    再热闹一下,刚才整理了一下自己的代码,觉得好玩,拿来帖上,没有别的意思,我想上面的朋友已经解决问题了,不过看到还没有结帖就又改了一下粘了上来:) //日期格举
    public enum CN_Week
    {
    星期五 = DayOfWeek.Friday,
    星期一 = DayOfWeek.Monday,
    星期六 = DayOfWeek.Saturday,
    星期日 = DayOfWeek.Sunday,
    星期四 = DayOfWeek.Thursday,
    星期二 = DayOfWeek.Tuesday,
    星期三 = DayOfWeek.Wednesday, }
    //得到一个月中第几周周几是哪一天
    public string GetDateString (int year, int month, int number, CN_Week week, out DateTime day)
    {
    int tmpNumber = 0; if ( number == 0 )
    {
    number = 1;
    } if ( number > 0 )
    {
    tmpNumber = number - 1;
    }
    else
    {
    tmpNumber = number;
    } DateTime firstDay;
    firstDay=new DateTime(year,month,1); int days=(number) * 7  + (int)week - (int)firstDay.DayOfWeek;

    DateTime tmpDay = firstDay.AddDays(days); string result = "{0}年 {1}月 {2}周的 {3} 是 {4}"; string tmpStr = null;
    if ( number > 0 )
    {
    tmpStr = "第" + number.ToString();
    }
    else
    {
    tmpStr =  "倒数第" + number.ToString();
    }

    result = string.Format( result, year.ToString(), month.ToString(), tmpStr, week.ToString(), tmpDay.ToString("yyyy年MM月dd日"));
    day = tmpDay;
    return result;
    }
    //得到一个日期在周几
    private string GetWeekString(DateTime date)
    {
    DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间
    int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}";
    result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result;
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    DateTime day;
    string msg = GetDateString(int.Parse(textBox2.Text), int.Parse(this.textBox3.Text), int.Parse(this.textBox1.Text), CN_Week.星期日, out day); MessageBox.Show(msg);
    MessageBox.Show(day.ToString());
    //MessageBox.Show( this.GetWeekString(new DateTime( 2004,5,9)));

    return;
    }
      

  14.   

    现在办事真是粗心,再改一下,呵呵.----------------------------------------------
    //日期格举
    public enum CN_Week
    {
    星期五 = DayOfWeek.Friday,
    星期一 = DayOfWeek.Monday,
    星期六 = DayOfWeek.Saturday,
    星期日 = DayOfWeek.Sunday,
    星期四 = DayOfWeek.Thursday,
    星期二 = DayOfWeek.Tuesday,
    星期三 = DayOfWeek.Wednesday,}
    //得到一个月中第几周周几是哪一天
    public string GetDateString (int year, int month, int number, CN_Week week, out DateTime day)
    {
    int tmpNumber = 0; if ( number == 0 )
    {
    number = 1;
    } if ( number > 0 )
    {
    tmpNumber = number - 1;
    }
    else
    {
    tmpNumber = number;
    } DateTime firstDay=new DateTime(year,month,1); int days= number * 7  + (int)week - (int)firstDay.DayOfWeek;

    DateTime tmpDay = firstDay.AddDays(days); string result = "{0}年 {1}月 {2}周的 {3} 是 {4}"; string tmpStr = null;
    if ( number > 0 )
    {
    tmpStr = "第" + number.ToString();
    }
    else
    {
    tmpStr =  "倒数第" + Math.Abs(number).ToString();
    }

    result = string.Format( result, year.ToString(), month.ToString(), tmpStr, week.ToString(), tmpDay.ToString("yyyy年MM月dd日"));
    day = tmpDay; return result;
    }
    //得到一个日期在周几
    private string GetWeekString(DateTime date)
    {
    DateTime firstDay = new DateTime( date.Year, date.Month, 1 ); //得到所给日期所在月份的第一天 TimeSpan pastDays = date-firstDay; //算出经过的时间
    int weeks = pastDays.Days/7 + 1; //算出当月到给定日期过了几周 CN_Week week = (CN_Week)date.DayOfWeek;//算出所给日期是星期几 string result ="{0} 是 {1 } 的第 {2} 周的 {3}";
    result = string.Format( result, date.ToString("yyyy年MM月dd日"), date.ToString("yyyy年MM月"), weeks.ToString(), week.ToString()); return result;
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    DateTime day;
    string msg = GetDateString(int.Parse(textBox2.Text), int.Parse(this.textBox3.Text), int.Parse(this.textBox1.Text), CN_Week.星期日, out day); MessageBox.Show(msg);
    MessageBox.Show(day.ToString());
    //MessageBox.Show( this.GetWeekString(new DateTime( 2004,5,9)));

    return;
    }
    -------------------------------------------
    我闪人................
      

  15.   

    to: hbxtlhx(下着春雨的天)好像你和wuzhijie(阿杰)的代码一样……都没有考虑这个月实际有几天……转时间的时候会出错^_^
      

  16.   

    谢谢大家,问题已经解决,我这里贴出完整的代码
    public static DateTime getSpecificDayOfMonth(DateTime d,int i,System.DayOfWeek j)
    {
    if (i < -1 || i > 4 || i == 0) //-1代表最后一个,1-4和代表第一  到第4个
    {
    throw new Exception("invalid parameter");
    }
    DateTime dt = new DateTime();
    if(i != -1)
    {
    if (j < DateHelper.getFirstDayOfMonth(d).DayOfWeek)
    {
    dt = new DateTime(d.Year,d.Month,i * 7 + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getFirstDayOfMonth(d).DayOfWeek) + 1);
    }
    else
    {
    dt = new DateTime(d.Year,d.Month,(i - 1) * 7 + Convert.ToInt16(j) -Convert.ToInt16(DateHelper.getFirstDayOfMonth(d).DayOfWeek) + 1);
    }
    }
    else
    {
    if (j > DateHelper.getLastDayOfMonth(d).DayOfWeek)
    {
    dt = new DateTime(d.Year,d.Month,DateHelper.getLastDayOfMonth(d).Day + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getLastDayOfMonth(d).DayOfWeek) - 7);
                    }
    else
    {
    dt = new DateTime(d.Year,d.Month,DateHelper.getLastDayOfMonth(d).Day + Convert.ToInt16(j) - Convert.ToInt16(DateHelper.getLastDayOfMonth(d).DayOfWeek));
    }
    }
    return dt;
    }