简体   繁体   中英

How to check, is “X minutes” passed with timeStamp in C#?

I am trying to create script that checks is the current time passed, but getting some errors.

DateTime currentTime = DateTime.Now;
TimeSpan pauseMin = TimeSpan.FromMinutes(1);
TimeSpan compare = currentTime + pauseMin;
if (currentTime >= compare)
return null;

You can't compare DateTime and TimeSpan.

Try var compare = currentTime.AddMinutes(1)

If you need to somehow use TimeSpan, use Jamie F's answer.

I would write this as

DateTime currentTime = DateTime.Now;
TimeSpan pauseMin = TimeSpan.FromMinutes(1);
DateTime compare = currentTime.Add(pauseMin);
if (currentTime >= compare) {
    return null;
}

This uses the type of object that you are trying to represent with everything. DateTime's can have Timespan's added to them: https://msdn.microsoft.com/en-us/library/system.datetime.add%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

Or Istern's answer if you are always just adding an integer of minutes to the time.

DateTime and TimeSpan is different. You can use currentTime like this:

TimeSpan currentTime = TimeSpan.FromTicks(DateTime.Now.Ticks);

And you can get passed minutes like this:

double minutes = (compare - currentTime).TotalMinutes;

If you just want to pause for 1 minute, you can use

System.Threading.Thread.Sleep(1000 * 60);  // 1 minute = 60000 milliseconds

If you want your function to run for 1 minute, you can use something like

var returnAt = DateTime.Now().AddMinutes(1);

while ( true )
{ 
    // your code here ?

    if ( DateTime.Now() >= returnAt ) return null;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM