2014-01-06 5 views
0

Я пытаюсь напечатать набор дат с сегодняшнего дня. Ex: Если сегодня 06-янв-14, а значение CutOff равно 10, код должен дать мне 10 дней до 28-дек-13.Получение дат в обратном хронологическом порядке в .NET

Вот что я пробовал:

for (int i = 0; i < 10; i++) 
      { 
       string month = DateTime.Now.ToString("MMMMMMMM"); 
       int day = (int)DateTime.Now.AddDays(-i).Day; 

       Console.WriteLine(day + " " + month); 
      } 

Это дает правильный день, но печатает января каждый раз.

Любые подсказки с большой благодарностью.

Спасибо.

ответ

1
for (int i = 0; i < 10; i++) 
{ 
    DateTime date = DateTime.Now.AddDays(-i); 
    Console.WriteLine(String.Format("{0:d MMMM}",date)); 
} 
1

Конечно, это так. Вы только вычисляете день месяца, вы не пересчитываете всю дату.

Если вы говорите

DateTime olderDate = DateTime.Today.AddDays(-i); 

тогда ваш olderDate будет содержать правильную дату, которую вы ищете.

1

Проблема в том, что вы обновляете только день, а не дату (и так не хватает месяца).

Как насчет этого?

foreach (DateTime date in Enumerable.Range(0, 10) 
    .Select(r => DateTime.Now.Date.AddDays(-r))) 
{ 
    Console.WriteLine(date.Day + " " + date.Month); 
} 
0

Это ваш виновник:

string month = DateTime.Now.ToString("MMMMMMMM");

Это всегда даст вам месяц от текущей даты & времени. Учитывая, что вы используете код в январе, он всегда выводит январь. Если вы запустите код в следующем месяце, он будет всегда выводить февраль.

0
for (int i = 0; i < 10; i++) 
     { 
      var newDate = DateTime.Now.AddDays(-i); 
      Console.WriteLine(newDate.Day + " " + newDate.Month); 
     } 
Смежные вопросы