Emmablakes Ответов: 2

Как выполнить действие, если дата-время больше / больше 30 минут


у меня есть метка, которая получает возвращаемое значение как datetime.

я хочу сформулировать условие, которое будет смотреть на время и выполнять действие, если дата-время больше/больше 30 минут, как показано в приведенном ниже коде.

спасибо.

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

lblCompletedLastTime.Text ="Last Completed at "+ dt.Rows[0]["Last_TimeCompleted"].ToString(); // this gets the datetime from the database and returns it to the label
                if (lblCompletedLastTime.Text > 30min)// if the returned datetime is greater than 30min
                {
                   to do xxxxxx
                }

2 Ответов

Рейтинг:
11

phil.o

Существует TimeSpan структура, которая именно то, что вам нужно:

DateTime completedOn = dt.Rows[0]["Last_TimeCompleted"];
TimeSpan elapsed = DateTime.Now - completedOn;

if (elapsed.TotalMinutes > 30)
{
   // TODO
}

Как видите, вы можете вычесть два DateTime структуры и получить TimeSpan структура, характеризующая разницу во времени между ними.

Любезно.


Рейтинг:
1

Richard Deeming

Предполагая, что вы имеете в виду "если время больше 30 минут тому назад", и предполагая, что вы храните значение в базе данных как либо datetime или datetime2, тогда что-то вроде этого должно сработать:

DateTime lastCompleted = (DateTime)dt.Rows[0]["Last_TimeCompleted"];
lblCompletedLastTime.Text = string.Format("Last Completed at {0}", lastCompleted);

if (lastCompleted.ToUniversalTime().AddMinutes(30) < DateTime.UtcNow)
{
    // Perform the action...
}


Emmablakes

спасибо.