拆分期间分为月份

TWT*_*TWT 1 c# datetime

我有以下日期时间:

Start = 15/12/2012 13:00:00
End   = 16/02/2013 14:00:00
Run Code Online (Sandbox Code Playgroud)

我怎样才能将它分成3个部分?

- 15-12-2012 13:00:00 -> 01-01-2013 00:00:00
- 01-01-2013 00:00:00 -> 01-02-2013 00:00:00
- 01-02-2013 00:00:00 -> 16-02-2013 14:00:00
Run Code Online (Sandbox Code Playgroud)

总时间跨度必须保持不变.LINQ可以轻松完成吗?

小智 6

当然,试试这个(包含小助手类)

处理:

var Start = DateTime.Parse("15 Dec 2012 13:00:00");
var End = DateTime.Parse("16 Feb 2013 14:00:00");

var runningDate = Start;
while (runningDate < End)
{
    var nextMonthSeed = runningDate.AddMonths(1);
    var to = DateHelper.Min(new DateTime(nextMonthSeed.Year, nextMonthSeed.Month, 1), End);
    Console.WriteLine("{0} -> {1}", runningDate.ToString("dd-MM-yyyy HH:mm:ss"), to.ToString("dd-MM-yyyy HH:mm:ss"));
    runningDate = to;
}
Run Code Online (Sandbox Code Playgroud)

助手班:

public static class DateHelper
{
    public static DateTime Min(DateTime date1, DateTime date2)
    {
        return (date1 < date2 ? date1 : date2);
    }
}
Run Code Online (Sandbox Code Playgroud)