日期比较 - 如何检查是否过了20分钟?

时间:2011-10-09 02:54:48

标签: c# .net datetime

如何检查当前日期是否已过去20分钟?

例如:

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

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

最好的方法是什么? 谢谢:))

6 个答案:

答案 0 :(得分:67)

  1. 您应该将开始时间转换为UTC时间,例如“开始”。
  2. 您现在可以使用以下方法将开始时间与当前UTC时间进行比较:

    start.AddMinutes(20) > DateTime.UtcNow

  3. 这种方法意味着您将获得有关夏令时变化的正确答案。

    通过将时间添加到开始时间而不是减去和比较TimeSpan上的总时间,您可以使用更易读的语法并且可以处理更多日期差异情况,例如从开始1个月,从开始2周,...

答案 1 :(得分:10)

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  
}

答案 2 :(得分:5)

oldDate解析为DateTime对象(DateTime.Parse)。

start中减去已解析的日期。这将返回TimeSpan

检查TotalMinutes

答案 3 :(得分:4)

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
    }

答案 4 :(得分:1)

我能够通过在我的项目中使用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。

答案 5 :(得分:0)

var end = DateTime.Parse(oldDate);   
 if (start.Hour == end.Hour && start.AddMinutes(20).Minute >= end.Minute)