在做web开发过程中,写了一个工具类,返回一段时间日期:
/**
 *start_date是传入开始的日期,end_date是截至的日期,
 *功能要返回开始日期到截至日期之间的所有日期对象
**/
public List<DateTime> get_WeekList(DateTime start_date, DateTime end_date)
        {
            List<DateTime> datelist = new List<DateTime>();
            DateTime temp_date;
            for (temp_date = start_date; temp_date.CompareTo(end_date) < 0; temp_date.AddDays(1))
            {
                datelist.Add(temp_date);
            }
            return datelist;
        }
程序运行到datelist.Add(temp_date);的时候报出OutOfMemoryException!求高人指点如何解决!谢谢!

解决方案 »

  1.   

    无限循环!估计你传的值导致for无限循环了,就会报这个错误
      

  2.   

    这里start_date 的值为2010-9-13 0:00:00
    end_date 的值为2010-9-20 0:00:00这里不会出现死循环吧?
      

  3.   

    compareto只能比较大小二、时间差的计算
    法一、使用TimeSpan ,同时也介绍一下TimeSpan的用法
    相关属性和函数
    Add:与另一个TimeSpan值相加。 
    Days:返回用天数计算的TimeSpan值。 
    Duration:获取TimeSpan的绝对值。 
    Hours:返回用小时计算的TimeSpan值 
    Milliseconds:返回用毫秒计算的TimeSpan值。 
    Minutes:返回用分钟计算的TimeSpan值。 
    Negate:返回当前实例的相反数。 
    Seconds:返回用秒计算的TimeSpan值。 
    Subtract:从中减去另一个TimeSpan值。 
    Ticks:返回TimeSpan值的tick数。 
    TotalDays:返回TimeSpan值表示的天数。 
    TotalHours:返回TimeSpan值表示的小时数。 
    TotalMilliseconds:返回TimeSpan值表示的毫秒数。 
    TotalMinutes:返回TimeSpan值表示的分钟数。 
    TotalSeconds:返回TimeSpan值表示的秒数。 
    简单示例:
    DateTime d1 =new DateTime(2004,1,1,15,36,05);
    DateTime d2 =new DateTime(2004,3,1,20,16,35);
    TimeSpan d3 = d2.Subtract(d1);
    LbTime.Text = "相差:"
    +d3.Days.ToString()+"天"
    +d3.Hours.ToString()+"小时"
    +d3.Minutes.ToString()+"分钟"
    +d3.Seconds.ToString()+"秒";
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wcmtu/archive/2009/01/03/3696622.aspx
      

  4.   

    temp_date.AddDays(1)
    改为
    temp_date=temp_date.AddDays(1)
      

  5.   

    问题已解决!感谢wuyazhe的回答!我忽略了AddDays语句并没有赋值,只是时间加了一天temp_date变量没有得到重新赋值导致死循环!谢谢,分给你了,也谢谢以上两位的帮忙!