将日期范围拆分为多个范围?

Ste*_*eam 1 .net c# datetime date-range

我有一个开始日期和结束日期(以sql server datetime格式).我想将它分成几个范围,即几对开始和结束日期值.注 - 我有.NET 3.5和Visual Studio 2008.

例如.S = 2005. E = 2010,块大小= 1年.巴黎产生= 2005-06,06-07,07-08,08-2010

块可以是任何天数/月.我把代码放在SO帖子中,在我的主要方法之后,我得到了一些错误.Post - 将日期范围分成日期范围块

代码 -

public static IEnumerable<Tuple<DateTime, DateTime>> SplitDateRange(DateTime start, DateTime end, int dayChunkSize)
{
    DateTime chunkEnd;
    while ((chunkEnd = start.AddDays(dayChunkSize)) < end)
    {
        yield return Tuple.Create(start, chunkEnd);
        start = chunkEnd;
    }
    yield return Tuple.Create(start, end);
}
Run Code Online (Sandbox Code Playgroud)

我收到两个错误:

'CodeHere.csproj.ScriptMain.SplitDateRange(System.DateTime,System.DateTime,int)'的主体不能是迭代器块,因为'IEnumerable

和:

"元组"这个名称在当前上下文中不存在

Jon*_*eet 5

您正在尝试使用System.Tuple<T1, T2>,这只是在.NET 4中引入的.您使用的是.NET 3.5,因此该结构不可用.我建议你创建自己的DateRange类型,封装一个开始和结束DateTime,然后返回一个IEnumerable<DateRange>.

要么,要么升级到.NET 4或4.5 ......

  • @blasto:C#1与Java 1.4类似.在那之后,他们显着分歧.但它不仅仅是语言 - 它是成语,基础库等等.有很多东西需要习惯,而你最初从开始就是最好的.希望有了Java的知识,你可以很快地完成早期的工作,但它仍然值得做. (4认同)