我说一个比较笨的 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就是每个日期的字符串,转换一下就是了 } }
这属于设计上的问题,没有什么好的办法,只能循环处理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(); }至于输入字符串合法性等细节问题,自己处理下
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就是每个日期的字符串,转换一下就是了
}
}
{
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();
}至于输入字符串合法性等细节问题,自己处理下
start = start.AddDays(1);
这是增加一天的还有增加月的年的。你看下msdn