C # итерация назад по дате

Я ищу решение C #, которое позволит мне перебирать дату назад. Начиная с текущей даты или указанной даты, я хотел бы перебрать дату, вычитая один день каждый раз через цикл в течение заданного количества дней. Конечно, он должен уметь определять, когда месяц изменился или это високосный год и т. Д., И возвращать дату в формате ММ-ДД-ГГГГ.


person Baxter    schedule 05.03.2012    source источник
comment
Просто чтобы дважды проверить - вы что-то делаете в цикле или просто ищете функцию вычитания даты?   -  person Paddy    schedule 05.03.2012
comment
Я хочу сделать что-то в цикле для каждого дня / даты, на которые я рассчитываю в обратном порядке.   -  person Baxter    schedule 05.03.2012


Ответы (3)


Должно быть достаточно просто:

var givenNumberOfDays = 30;
for( DateTime day = DateTime.Now; day > DateTime.Now.AddDays( -givenNumberOfDays); day = day.AddDays(-1) )
{
  //perform your logic here
  var dateInCorrectFormat = day.ToString("MM-dd-yyyy");
}
person Øyvind Bråthen    schedule 05.03.2012
comment
Выглядит отлично! Спасибо. - person Baxter; 05.03.2012

это будет повторять обратные слова:

class Program
{
    static void Main(string[] args)
    {

        DateTime myDate = DateTime.Now;

        for (int i = 0; i < 10; i++)
        {
            Console.WriteLine(myDate.AddDays(-i).ToString("MM-dd-yyyy"));
        }


    }
}
person Alex Peta    schedule 05.03.2012
comment
Зачем вводить две переменные цикла, myDate и i, когда достаточно только myDate? - person Øyvind Bråthen; 05.03.2012
comment
Лично я считаю, что это более читабельно, чем вставлять все в скобки for (). - person 4imble; 05.03.2012

Вы можете использовать функцию Dateadd, которая позволяет добавлять или вычитать интервал времени до / от даты и возвращать полученную дату. В вашем случае интервал - «d» (день). См. здесь.

person Alberto De Caro    schedule 05.03.2012