user726720
user726720

Reputation: 1237

Timespan Compare

I have following time samples:

06:09
08:10
23:12
00:06   // next day
00:52

I have a sample 00:31 (nextday) that needs to be compared and check if its less then the above samples.

if (cdnTime > nextNode)
{
   //dosomething
 }

cdnTime here is the 00:31 and nextNode is the above given multiple samples. Time 00:31 is greater then all samples except 00:52 so I need the if statement to be false until it reaches 00:52. How do I achieve this. Keeping in mind the time samples switch to next day, do I need to make it as DateTime and then compare or is there any way of comparison with TimeSpan without dates.

Upvotes: 0

Views: 1830

Answers (1)

Vivien Sonntag
Vivien Sonntag

Reputation: 4629

Yes you need to somehow tell that it's another day. You can either use a DateTime, but you could also initialize a timespan with an additional day - it provides a Parse-method for this:

using System;
using System.Globalization;             

public class Program
{
    public static void Main()
    {
        var cdnTime = TimeSpan.Parse("23:12", CultureInfo.InvariantCulture);
        var nextTime = TimeSpan.Parse("01.00:03", CultureInfo.InvariantCulture);

        Console.WriteLine(cdnTime.TotalMinutes);
        Console.WriteLine(nextTime.TotalMinutes);
        Console.WriteLine(cdnTime.CompareTo(nextTime));
        Console.WriteLine(cdnTime < nextTime);
    }
}

Another option would be to add the day afterwards:

var anotherTime = TimeSpan.FromMinutes(3);
anotherTime = anotherTime.Add(TimeSpan.FromDays(1));        
Console.WriteLine(anotherTime.TotalMinutes);

You can try it out here: https://dotnetfiddle.net/k39TIe

Upvotes: 1

Related Questions