Clarkinator
Clarkinator

Reputation: 79

Compare 2 strings of time in C#

So I've got a string 00:00:15:185 which I need to tell is greater than 15 seconds.

Time format is HH:m:ss:FFF

This is clearly longer than 15 seconds but I can't compare it properly.

Current code is this:

value = "00:00:15:185";    
if (DateTime.Parse(value) > DateTime.Parse("00:00:15:000"){
    //do stuff
}

It's giving exceptions when I run it all the time and the program doesn't work when it should

Upvotes: 5

Views: 7295

Answers (3)

LearnTo LearnTech
LearnTo LearnTech

Reputation: 11

 DateTime time = DateTime.Now;
String result = time.ToString("HH:mm ");

 DateTime firstTimr = DateTime.ParseExact(reader["shift_start_time"].ToString(), "HH:mm:tt", null);
 String firstTimr1 = firstTimr.ToString("HH:mm ");
DateTime lastTime = DateTime.ParseExact(reader["Shift_last_time"].ToString(), "HH:mm:tt", null);
String lastTime1 = lastTime.ToString("HH:mm ");

if (DateTime.Parse(result) >= DateTime.Parse(firstTimr1) && (DateTime.Parse(result) <= DateTime.Parse(lastTime1)))
                    {
                       `enter code here` MessageBox.Show("First Shit");

                    }

Upvotes: 0

Hari Prasad
Hari Prasad

Reputation: 16956

Another option(apart from @rob 's answer), use DateTime.ParseExact

    var value = "00:00:15:185";    

    if (DateTime.ParseExact(value, "HH:mm:ss:fff", CultureInfo.InvariantCulture) > 
        DateTime.ParseExact("00:00:15:000", "HH:mm:ss:fff", CultureInfo.InvariantCulture))
    {
        // logic here.  
    }

Upvotes: 1

Rob
Rob

Reputation: 27357

Your string doesn't represent a time, but an amount of time. We have TimeSpan for that.

var value = "00:00:15:185";
if (TimeSpan.ParseExact(value, @"hh\:mm\:ss\:FFF", CultureInfo.InvariantCulture)
        > TimeSpan.FromSeconds(15)) 
{
    //do stuff
}

Upvotes: 6

Related Questions