首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何遍历日期范围?

如何遍历日期范围?
EN

Stack Overflow用户
提问于 2009-12-04 23:13:18
回答 16查看 181.6K关注 0票数 227

我甚至不确定如何在不使用一些可怕的for循环/计数器类型的解决方案的情况下做到这一点。以下是问题所在:

我有两个日期,一个开始日期和一个结束日期,在指定的时间间隔,我需要采取一些行动。例如:对于2009年3月10日到2009年3月26日之间的每个日期,我需要在列表中创建一个条目。所以我的输入是:

代码语言:javascript
复制
DateTime StartDate = "3/10/2009";
DateTime EndDate = "3/26/2009";
int DayInterval = 3;

我的输出将是一个具有以下日期的列表:

3/13/2009 3/16/2009 3/19/2009 3/22/2009 3/25

那么我该怎么做这样的事情呢?我考虑使用一个for循环,它将在范围内的每一天之间使用一个单独的计数器进行迭代,如下所示:

代码语言:javascript
复制
int count = 0;

for(int i = 0; i < n; i++)
{
     count++;
     if(count >= DayInterval)
     {
          //take action
          count = 0;
     }

}

但似乎还有更好的办法?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2009-12-04 23:16:02

好吧,你需要以某种方式循环遍历它们。我更喜欢这样定义一个方法:

代码语言:javascript
复制
public IEnumerable<DateTime> EachDay(DateTime from, DateTime thru)
{
    for(var day = from.Date; day.Date <= thru.Date; day = day.AddDays(1))
        yield return day;
}

然后你可以像这样使用它:

代码语言:javascript
复制
foreach (DateTime day in EachDay(StartDate, EndDate))
    // print it or whatever

以这种方式,你可以每隔一天,每三天,只有工作日,等等。例如,要以“开始”日期开始每隔三天返回一次,你可以在循环中调用AddDays(3)而不是AddDays(1)

票数 534
EN

Stack Overflow用户

发布于 2009-12-04 23:18:37

我在MiscUtil中有一个Range类,您可能会发现它很有用。结合各种扩展方法,您可以执行以下操作:

代码语言:javascript
复制
foreach (DateTime date in StartDate.To(EndDate).ExcludeEnd()
                                   .Step(DayInterval.Days())
{
    // Do something with the date
}

(您可能想或不想排除end -我只是想提供一个示例。)

这基本上是mquander解决方案的现成形式(更通用)。

票数 32
EN

Stack Overflow用户

发布于 2009-12-04 23:17:56

对于您的示例,您可以尝试

代码语言:javascript
复制
DateTime StartDate = new DateTime(2009, 3, 10);
DateTime EndDate = new DateTime(2009, 3, 26);
int DayInterval = 3;

List<DateTime> dateList = new List<DateTime>();
while (StartDate.AddDays(DayInterval) <= EndDate)
{
   StartDate = StartDate.AddDays(DayInterval);
   dateList.Add(StartDate);
}
票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1847580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档