1

C# で 2 つの日付範囲間をループするにはどうすればよいですか?

例えば-

クレジット カード EMI モジュールを作成しています。1 人のユーザーが 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
4

5 に答える 5

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);
}

Ouputは次のようになります:

08/02/2009
08/03/2009
08/04/2009
08/05/2009
08/06/2009
08/07/2009
于 2013-02-13T10:24:33.713 に答える
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);
}
于 2013-02-13T10:24:24.543 に答える
1

DatetimeのAddMonths()メソッドを使用できます。ドキュメントを見てください

于 2013-02-13T10:25:01.597 に答える
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();
于 2013-02-13T10:40:01.943 に答える