比如今天的日期是 2007/2/22, 理论(得到某一日期的Week开始日)上ListBox上应该输出2007/2/18,但是结果输出的仍然是2007/2/22!真的不明白,望指教~~private void button7_Click(object sender, System.EventArgs e)
{
DateTime a=DateTime.Now;

GetWeekDate(DateTime.Now,ref a);
listBox1.Items.Add(a.ToString());
listBox1.Items.Add(a.AddDays(3).ToString());

}Private void GetWeekDate(DateTime GivenDay,ref DateTime BeginDate)'得到某一天的Week开始日 {
int a=0;
switch(GivenDay.DayOfWeek)
{
case  DayOfWeek.Friday:   
a=5;   
break;   
case DayOfWeek.Monday:   
a=8;   
break;   
case DayOfWeek.Saturday:   
a=6;   
break;   
case DayOfWeek.Sunday:   
a=7;   
break; 
case DayOfWeek.Thursday:   
a=4;   
break;
case DayOfWeek.Tuesday:   
a=2;   
break; 
case DayOfWeek.Wednesday:   
a=3;   
break; 
} BeginDate=GivenDay;
BeginDate.AddDays(a*(-1));//返回的数并没有增加到(a*(-1))天
}

解决方案 »

  1.   

    BeginDate=BeginDate.AddDays(a * (-1));//返回的数并没有增加到(a*(-1))天
      
    *****************************************************************************
    欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 最新版本:20070212http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  2.   

    应该这么写: BeginDate = GivenDay.AddDays(a*(-1));
    AddDays的结果是作为返回值返回的,而不是作用在调用该方法的类实例上.
      

  3.   

    低级错误,那楼主你想想这句
    DateTime.Now.AddDays(365);
    不就把今天改了?
      

  4.   

    BeginDate = GivenDay.AddDays(-a);低级错误,跟ref无关.另外上面的代码实在不敢恭维,有必要写这么复杂么? 根本用返回值就可以解决的场合干吗用引用参数呢?而且代码根本不用这么多.private DateTime GetBeginDate(DateTime GivenDay)
    {
     return GivenDay.AddDays(1 - (int)GivenDay.DayOfWeek );
    }一行代码搞定.
      

  5.   

    看看你的switch是否多余?ref是否多余?