20071101-20080110,20080113,20080712-20080801   返回这当中的每天日期。  如:2007-11-01,2007-11-02,...,2008-01-13,2008-07-12,....  ~~~~~~ 日期
怎么做最有效.

解决方案 »

  1.   

    我说一个比较笨的
    string s="20071101-20080110,20080113,20080712-20080801";
    string[] a=s.split(',');
    foreach(string ss in a)
    {
    string[] b=a.split('ss');
        foreach(string aaa in b)
        {
           aaa就是每个日期的字符串,转换一下就是了
        }
    }
      

  2.   

    这属于设计上的问题,没有什么好的办法,只能循环处理static List<DateTime> AllDate(string src)
    {
        List<DateTime> allDate = new List<DateTime>();
        string[] dates = src.Split(',');
        foreach (string s in dates)
        {
            if (s.IndexOf('-') > -1)
            {
                DateTime start = DateTime.ParseExact(s.Split('-')[0], "yyyyMMdd", null);
                DateTime end = DateTime.ParseExact(s.Split('-')[1], "yyyyMMdd", null);
                while (start <= end)
                {
                    allDate.Add(start);
                    start = start.AddDays(1);
                }
            }
            else
                allDate.Add(DateTime.ParseExact(s, "yyyyMMdd", null));
        }
        return allDate;
    }
    //调用
    static void Main(string[] args)
    {
        List<DateTime> list = AllDate("20071101-20080110,20080113,20080712-20080801");
        foreach (DateTime dt in list)
        {
            Console.WriteLine(dt.ToString("yyyy-MM-dd"));
        }
        Console.ReadLine();
    }至于输入字符串合法性等细节问题,自己处理下
      

  3.   

    楼上写的挺详细得,用VS自带的时间方法就可以避免闰月,年初年末,月初月末的问题。就是
    start = start.AddDays(1);
    这是增加一天的还有增加月的年的。你看下msdn