Scribling Doodle Ответов: 1

Как я могу проверить, имеет ли текущая дата интервал в 5 дней на дату, вставленную в столбец


Привет кодеры,

Я боролся с чем-то относительно рисования строк datagridview для лучшего использования и понимания.

Что я хочу сделать:

Просто измените цвет столбца, если value(это значение даты) составляет менее 5 дней, чтобы достичь сегодняшней даты (DateTime.Now()).

Что я уже пробовал:

foreach (DataGridViewRow row in dgw.Rows)
                   {
                    var now = DateTime.Parse(DateTime.Now.ToShortDateString());
                    var cellendDate = DateTime.Parse(row.Cells[5].Value.ToString());
                    var forTenDays = now.AddDays(+5);
                    var cellstartDate = DateTime.Parse(row.Cells[4].Value.ToString());
                    if (cellstartDate > cellendDate)
                    {
                        row.DefaultCellStyle.BackColor = Color.Gray;
                    }                 
                    else if ((now < cellendDate) && (cellendDate < forTenDays))
                    {
                        row.Cells[5].Style.BackColor = Color.Yellow; 
                    }else if (now == cellendDate)
                    {
                        row.Cells[5].Style.BackColor = Color.Red;
                    }else
                    {
                        row.Cells[5].Style.BackColor = Color.YellowGreen;
                    }
                }

[no name]

"Я боролся" - это не описание какой-либо проблемы. Если вы хотите сделать что-то с разницей в 5 дней, то почему вы добавляете 10 дней?

Scribling Doodle

5, 10, 30-это одно и то же... Я забыл отредактировать это, так как тестировал кое-что. Извините.

PIEBALDconsult

значение datetime.Разбора(Типа Datetime.Сейчас.Тошортдатестринг ()) - пожалуйста, не делайте этого! Просто используйте DateTime. Now
Если вы вычтете cellstartDate или cellendDate из DateTime.Теперь вы получаете временной интервал.
Затем вы можете просто проверить свойство TimeSpan TotalDays.

1 Ответов

Рейтинг:
6

OriginalGriff

Во-первых, не используйте это:

var now = DateTime.Parse(DateTime.Now.ToShortDateString());

Вместо этого используйте это:
DateTime now = DateTime.Now.Date;

И не меняйте значения ячеек на строку, а затем не анализируйте их обратно в DateTimes: если они являются значениями DateTime в ячейке, то приведите их:
DateTime cellendDate = (DateTime)row.Cells[5].Value;

Если вы хотите пять дней, то добавьте 5, а не 10...


Scribling Doodle

Я попробую, и уже отредактировал вопрос, так как я тестировал некоторые значения, я забыл об этом 10... Но уже изменил его.

Maciej Los

5ед!