我正在寻找一种按天的块大小将日期范围拆分为一系列日期范围的方法。我打算用它来缓冲对服务的调用,如果日期范围太大,服务就会出错。
到目前为止,这是我想出的。它似乎有效,但我不确定它是否会正确退出。这似乎以前可能已经做过好几次了,但我找不到。
public IEnumerable<Tuple<DateTime, DateTime>> SplitDateRange(DateTime start, DateTime end, int dayChunkSize)
{
var newStart = start;
var newEnd = start.AddDays(dayChunkSize);
while (true)
{
yield return new Tuple<DateTime, DateTime>(newStart, newEnd);
if (newEnd == end)
yield break;
newStart = newStart.AddDays(dayChunkSize);
newEnd = (newEnd.AddDays(dayChunkSize) > end ? end : newEnd.AddDays(dayChunkSize));
}
}
我正在寻找改进建议,或者“老兄,为此使用这个现有功能!”