2016-11-23 3 views
-1

Я пытаюсь проверить, прошло ли определенное количество дней с даты, и если оно изменило цвет строки сетки. Итак, если дата 12/11/2016, и я хочу проверить, прошло ли 10 дней с этой даты.проверить, прошло ли количество дней с даты

if (dt.Date > dt.Date.AddDays(10)) 
{ 
    e.Item.Style.Add("background-color", "#C400F9"); 
    break; 
} 

Так добавление 10 дней к 12-м был бы 22/11/2016 и с сегодняшнего дня является 23/11/2016, что означает 10 дней прошли. Но все строки в сетке меняются на цвет. Нужно ли добавлять другую инструкцию if, чтобы сравнить дату + дни, прошедшие с сегодняшней датой?

+0

выложили вы соответствующий пример? Условие 'dt.Date> dt.Date.AddDays (10)' никогда не будет выполнено, поэтому строки yor не могут изменить цвет на основе этого условия. Трудно сказать, что не так в вашем * реальном * состоянии .... –

+0

все упомянули проблему сравнения, и я предполагаю, что это всего лишь образец кода, потому что никакие строки не получат цвет, и вы говорите, что каждая строка получает его. Является ли 'dt' глобальной датой или датой в строке? – bixarrio

+0

Возможный дубликат [Как можно рассчитать относительное время в C#?] (Http://stackoverflow.com/questions/11/how-can-relative-time-be-calculated-in-c) – VDWWD

ответ

3

Вы имели ввиду использовать сегодняшнюю дату? Если да, то это DateTime.Now:

if (DateTime.Now > dt.Date.AddDays(10)) 

На данный момент вы сравниваете dt.Date с той же датой плюс 10 дней - как и другие отметили, что это никогда не будет достигнута.

Обновление. Как Тим предлагает в комментариях, использование DateTime.Today может быть более уместным.

+0

Лучше использовать 'DateTime.Today' вместо' DateTime.Now' здесь, в противном случае полночь вернет false, но через секунду вы получите правду, оба будут в тот же день –

+0

@TimSchmelter, спасибо, обновлено с этим предложением – Andrei

0

Ваша проблема в вашем сравнении. Вы пытаетесь выяснить, больше ли dt, чем dt + 10. Очевидно, что это никогда не будет правдой.

0

Ваше сравнение никогда не будет так, это как делает:

Если (10> 10 + 10) ...

То, что вы хотите сделать, это сравнить 10 дней после даты с сегодня используя DateTime.Now

0
if (DateTime.Now.Date> dt.Date.AddDays(10).Date) 
{ 
    e.Item.Style.Add("background-color", "#C400F9"); 
    break; 
} 
0

если (DateTime.Now.Date> dt.Date.AddDays (10)) {

}

0

Вы можете попробовать это, ниже X является дата, что вы хотите, чтобы сравнить с (он может прийти форма дб или жёстко прописанные даты)

if (X > dt.Date.AddDays(10)) 
     { 
      e.Row.Attributes.Add("background-color", "#C400F9"); 
     } 
+0

Это точно тот же код, что и ОП в своем вопросе. Вы хотели отредактировать его во что-то еще? – ChrisF

0
DateTime d1; 
DateTime d2; 

if((d1 - d2).TotalDays == 10) 
{ 
    //some code 
} 
Смежные вопросы