c# 代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
List<DateTime> dateTimes = new List<DateTime>();
dateTimes.Add(DateTime.Parse("2019-09-01"));
dateTimes.Add(DateTime.Parse("2019-09-02"));
dateTimes.Add(DateTime.Parse("2019-09-05"));
dateTimes.Add(DateTime.Parse("2019-09-06"));
dateTimes.Add(DateTime.Parse("2019-09-09"));
dateTimes.Add(DateTime.Parse("2019-09-10"));
dateTimes.Add(DateTime.Parse("2019-09-12"));
dateTimes.Add(DateTime.Parse("2019-09-15"));
List<List<DateTime>> dates = GetDateSegment(dateTimes);
for (int i = 0; i < dates.Count; i++)
{
Console.WriteLine("第"+(i+1)+"区间");
foreach (DateTime item in dates[i])
{
Console.WriteLine(item.ToString("yyyy-MM-dd"));
}
}
Console.ReadLine();
}
/// <summary>
/// 日期序列分段
/// </summary>
/// <param name="dateTimes"></param>
/// <returns></returns>
public static List<List<DateTime>> GetDateSegment(List<DateTime> dateTimes)
{
dateTimes = dateTimes.OrderBy(p => p.Date).ToList();
List<List<DateTime>> dates = new List<List<DateTime>>();
List<DateTime> dateList = new List<DateTime>();
DateTime cur = DateTime.Now;
DateTime pre = dateTimes[0];
foreach (DateTime item in dateTimes)
{
cur = item;
if (DateDiff(pre, cur) <= 1)
{
dateList.Add(cur);
}
else
{
dates.Add(dateList);
dateList = new List<DateTime>();
dateList.Add(cur);
}
pre = cur;
}
dates.Add(dateList);
return dates;
}
public static int DateDiff(DateTime dateStart, DateTime dateEnd)
{
DateTime start = Convert.ToDateTime(dateStart.ToShortDateString());
DateTime end = Convert.ToDateTime(dateEnd.ToShortDateString());
TimeSpan sp = end.Subtract(start);
return sp.Days;
}
}
}
运行结果: