Сравнение дат - Как проверить, прошло ли 20 минут? - PullRequest
29 голосов
/ 09 октября 2011

Как проверить, прошло ли 20 минут с текущей даты?

Например:

var start = DateTime.Now;
var oldDate = "08/10/2011 23:50:31"; 

    if(start ??) {
     //20 minutes were passed from start
    }

Какой лучший способ сделать это?Спасибо:)

Ответы [ 6 ]

67 голосов
/ 09 октября 2011
  1. Вы должны преобразовать свое время начала в время UTC, скажем, «начало».
  2. Теперь вы можете сравнить время начала с текущим временем UTC, используя:

    start.AddMinutes(20) > DateTime.UtcNow

Этот подход означает, что вы получите правильный ответ при изменениях летнего времени.

Путем добавления времени ко времени начала вместо вычитания и сравненияобщее время на TimeSpan у вас более читаемый синтаксис И вы можете обрабатывать больше случаев разницы дат, например, 1 месяц с начала, 2 недели с начала, ...

10 голосов
/ 09 октября 2011
var start = DateTime.Now;
var oldDate = DateTime.Parse("08/10/2011 23:50:31");

if ((start - oldDate).TotalMinutes >= 20)
{
    //20 minutes were passed from start  
}
5 голосов
/ 09 октября 2011

Разобрать oldDate в DateTime объект (DateTime.Parse).

Вычтите проанализированную дату из start. Это вернет TimeSpan.

Осмотреть TotalMinutes.

4 голосов
/ 09 октября 2011
var start = DateTime.Now;
var oldDate = DateTime.Parse("08/10/2011 23:50:31"); 

    if(start.Subtract(oldDate) >= TimeSpan.FromMinutes(20)) 
    {
     //20 minutes were passed from start
    }
1 голос
/ 28 августа 2012

Мне удалось это сделать с помощью библиотеки JodaTime в моем проекте. Я вышел с этим кодом.

String datetime1 = "2012/08/24 05:22:34";
String datetime2 = "2012/08/24 05:23:28";

DateTimeFormatter format = DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss");
DateTime time1 = format.parseDateTime(datetime1);
DateTime time2 = format.parseDateTime(datetime2);
Minutes Interval = Minutes.minutesBetween(time1, time2);
Minutes minInterval = Minutes.minutes(20);

if(Interval.isGreaterThan(minInterval)){
  return true;
}
else{
  return false;
}

Это проверит, является ли интервал времени между datetime1 и datetime2 больше, чем 20 минут. Измените свойство на секунды. Это будет легче для вас. Это вернет false.

0 голосов
/ 09 октября 2011
var end = DateTime.Parse(oldDate);   
 if (start.Hour == end.Hour && start.AddMinutes(20).Minute >= end.Minute)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...