从现在到过去的datetime之间的时间跨度

时间:2012-01-22 20:48:02

标签: c# .net datetime

我想计算一个日期时间到现在的分钟数。 这就是我所拥有的:

TimeSpan SinceStatusChange = new TimeSpan();
SinceStatusChange = (double)(DateTime.Now.Date - StatusDateTime).TotalMinutes;

基本上,我想写这个条件语句:

if (SinceStatusChange is greater than 180 minutes)

如何编写“SinceStatusChange =”这一行,以便稍后测试该值是否大于180?

感谢。

5 个答案:

答案 0 :(得分:4)

您正在尝试将double分配给TimeSpan,由于显而易见的原因,这将无效。你已经拥有了你想要的东西,只需使用:

// the 'Minutes' property of a TimeSpan object is a double, 
// so the result is a double, not a new TimeSpan object.
double elapsed = (DateTime.Now - StatusDateTime).TotalMinutes;
if( elapsed > 180 )
{
    // do stuff
}

答案 1 :(得分:2)

你可以很简单地做到这一点:

if (DateTime.Now - StatusDateTime > TimeSpan.FromMinutes(180))
{
    // ...
}

答案 2 :(得分:1)

TotalMinutes对TimeSpan的调用返回一个double。将SinceStatusChange的签名更改为double,您可以像

一样使用它
double SinceStatusChange;
SinceStatusChange = (DateTime.Now.Date - StatusDateTime).TotalMinutes;

if (SinceStatusChange > 180)

答案 3 :(得分:1)

您可以使用TimeSpan s:

以更安全的方式执行此操作
TimeSpan _180mins = new TimeSpan(3,0,0);
var timeDiff = DateTime.Now.Date - StatusDateTime;

if(timeDiff < _180mins)
{
}

答案 4 :(得分:1)

这将为您提供所需的双倍:

    if (DateTime.Now.Subtract(statusDateTime).TotalMinutes > 180)
    {
        //do work.
    }