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

本文关键字:时间 之间 时间跨度 日期 过去 | 更新日期: 2023-09-27 18:21:17

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

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

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

if (SinceStatusChange is greater than 180 minutes)

我该如何写"SinceStatusChange="这行,以便稍后测试该值是否大于180?

谢谢。

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

您正试图将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
}

您可以非常简单地做到这一点:

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

对TimeSpan的TotalMinutes调用返回一个双精度。将SinceStatus的签名更改为double,您可以像一样使用它

double SinceStatusChange;
SinceStatusChange = (DateTime.Now.Date - StatusDateTime).TotalMinutes;
if (SinceStatusChange > 180)

只需使用TimeSpan s:,就可以以更安全的方式完成此操作

TimeSpan _180mins = new TimeSpan(3,0,0);
var timeDiff = DateTime.Now.Date - StatusDateTime;
if(timeDiff < _180mins)
{
}

这将为您提供所需的双重功能:

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