asp.net中的日期范围循环,C#

时间:2013-02-13 10:21:23

标签: c# asp.net

如何在C#中的两个日期范围之间循环?

例如 -

我正在创建一个信用卡EMI模块,假设一个用户想要6 EMI 我有一个日期范围:"08/02/2009-08/08/2009"我需要每月循环

输入:

Start Date- 08/02/2008
End Date - 08/07/2009

Charge Cycle - 6

输出就像 -

08/02/2008
08/03/2008
08/04/2008
08/05/2008
08/06/2008
08/07/2008

5 个答案:

答案 0 :(得分:2)

您可以在像

这样的while循环中使用DateTime.AddMonths
DateTime dtStart = new DateTime(2009,2,8);
DateTime dtEnd = new DateTime(2009,8,8);
while (dtStart < dtEnd)
{

    Console.WriteLine(dtStart.ToString("dd/MM/yyyy"));
    dtStart = dtStart.AddMonths(1);
}

输出将是:

08/02/2009
08/03/2009
08/04/2009
08/05/2009
08/06/2009
08/07/2009

答案 1 :(得分:1)

DateTime start = DateTime.Now;
for(int i = 0; i < 6; i++)
{
    start = start.AddMonth(i);
    Console.WriteLine("{0:dd/MM/yy}", start);

}

或者如果你愿意:

public static IEnumerable<DateTime> GetMonths(DateTime start, int numberOfMonths);
{
    for(int i = 0; i < numberOfMonths; i++)
    {
        start = start.AddMonth(i); 
        yield return start;
    }
}

foreach(var date in GetMonths(DateTime.Now, 6)
{
    Console.WriteLine("{0:dd/MM/yy}", date);
}

答案 2 :(得分:1)

您可以使用Datetime的AddMonths()方法。 看看documentation

答案 3 :(得分:0)

使用DateTime.AddMonths()方法。

  

返回一个新的DateTime,它将指定的月数添加到   这个实例的价值。

像;

DateTime a = new DateTime(2009, 2, 8);
DateTime b = new DateTime(2009, 8, 8);

while ( a < b )
{
     Console.WriteLine(a.ToShortDateString());
     a = a.AddMonths(1);
}

结果将是;

08.02.2009
08.03.2009
08.04.2009
08.05.2009
08.06.2009
08.07.2009

这是DEMO

答案 4 :(得分:0)

以下将返回指定日期之间的日期列表

        var startDate = DateTime.Parse("08/02/2009");
        var endDate = DateTime.Parse("08/08/2009");
        var resutl = Enumerable.Range(0, 1 + ((endDate.Year - startDate.Year) * 12) +  endDate.Month -1 - startDate.Month  )
            .Select(startDate.AddMonths)
            .ToList();