如何检查当前日期是否已过去20分钟?日期比较 - 如何检查20分钟是否已过?
例如:
var start = DateTime.Now;
var oldDate = "08/10/2011 23:50:31";
if(start ??) {
//20 minutes were passed from start
}
什么是做到这一点的最好方法是什么? 谢谢:)
如何检查当前日期是否已过去20分钟?日期比较 - 如何检查20分钟是否已过?
例如:
var start = DateTime.Now;
var oldDate = "08/10/2011 23:50:31";
if(start ??) {
//20 minutes were passed from start
}
什么是做到这一点的最好方法是什么? 谢谢:)
现在你可以使用你的启动时间比较当前UTC时间:
start.AddMinutes(20) > DateTime.UtcNow
这种方法意味着你会得到解决夏令时更改正确的答案。
通过增加时间到开始时间,而不是减去并比较TimeSpan上的总时间,您的语法更具可读性,并且您可以处理更多的日期差异情况,例如,从一开始1个月,从一开始2周,...
+1用于教授合乎逻辑但对我来说不是不言而喻的事情。我也喜欢更可读的语法提示。 –
看起来是最好的方式,我试试这个。 –
这是否改变了实际的物体。例如如果你把它存储在内存中,它会永久增加20分钟吗? 在这种情况下,从DateTime中删除20分钟会更有意义。UtcNow,因为这是一个构造函数 –
将oldDate
解析为DateTime
对象(DateTime.Parse
)。
从start
中减去解析日期。这将返回TimeSpan
。
检查TotalMinutes
。
+1这个答案比我的好。我忘了TotalMinutes ...这个答案可以防止不必要的第二个TimeSpan。 –
个人而言,我更喜欢'start.AddMinutes(20)> now',因为它表示“自开始以来超过20分钟已经过去”。此外,您可以使用它来测试使用TimeSpan无法轻松完成的周,月,年测量间隔。 –
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
}
var end = DateTime.Parse(oldDate);
if (start.Hour == end.Hour && start.AddMinutes(20).Minute >= end.Minute)
如果小时通过,这不起作用。 开始='23:20'结束='24:20'这是真的。 –
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
}
如果小时合格,这不起作用。 开始='23:20'结束='24:20'这是真的。 –
¿为什么你会以24:20的时间发送?在这种情况下,您应该使用TimeSpan对象,而不是DateTime,DateTime对象旨在用于有效的时间表示,而不是“24:20” –
我能够在我的项目使用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。
您可能希望使用'DateTime.UtcNow'而不是'DateTime.Now'来避免时钟跳跃或转发时夏时制变化的问题。 –
@Hightechrider:使用'UtcNow'只有在比较时间戳为UTC时才有用! – Gabe
@Gabe,显然是的,但将开始时间转换为UTC并比较它会比'DateTime.Now'更好,因为否则您可以得到一个小时似乎已经过去的情况! –