public class DateTimeArea
{
/// <summary>
/// 開始時間
/// </summary>
public DateTime startTime { get; set; }
/// <summary>
/// 開始時間
/// </summary>
public DateTime endTime { get; set; }
}
class Program
{
static void Main(string[] args)
{
DateTime starttime = DateTime.Parse("2020-3-30 18:50:44");
DateTime endtime = DateTime.Parse("2020-4-2 19:50:47");
List<DateTimeArea> list = new List<DateTimeArea>();
//分段輸出兩個時間
//如果時間是一天內
if (starttime.Day == endtime.Day)
{
//如果是同一天,按照同一天走
//開始就是開始,結束就是結束
list.Add(new DateTimeArea() { startTime = starttime, endTime = endtime });
}
else
{
//開頭
DateTime headStartTime = starttime;
DateTime headEndTime = new DateTime(starttime.Year, starttime.Month, starttime.Day, 23, 59, 59);
list.Add(new DateTimeArea() { startTime = headStartTime, endTime = headEndTime });
//結尾
DateTime bootStartTime = new DateTime(endtime.Year, endtime.Month, endtime.Day, 0, 0, 0);
DateTime bootEndTime = endtime;
//需要遍歷的天
int day = (bootStartTime - headEndTime).Days;
if (day > 0)
{
for (int i = 0; i < day; i++)
{
DateTime CenterEnd = headEndTime.AddDays(i + 1);
DateTime CenterStart = new DateTime(CenterEnd.Year, CenterEnd.Month, CenterEnd.Day, 0, 0, 0);
list.Add(new DateTimeArea() { startTime = CenterStart, endTime = CenterEnd });
}
}
list.Add(new DateTimeArea() { startTime = bootStartTime, endTime = bootEndTime });
}
Console.WriteLine($"分割的開始時間{starttime} 結束時間{endtime}");
Console.WriteLine();
foreach (var item in list)
{
Console.WriteLine($"開始時間{item.startTime} 結束時間{item.endTime}");
}
Console.ReadLine();
}
}
測試結果
哈哈,自己感覺不錯。