在C#中比较两个时间字符串

5

我有一个字符串 00:00:15:185,我需要判断它是否大于15秒。

时间格式为HH:mm:ss:FFF。

虽然这显然比15秒要长,但我无法正确比较它。

目前的代码如下:

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

每次运行它时都会出现异常,而且当应该工作时程序却无法正常工作。


这可能是一个重复的问题?https://dev59.com/_Wkv5IYBdhLWcg3w4kl2 - 最好使用DateTime.Compare或TimeSpan.Compare。 - Tetsuya Yamamoto
3个回答

6

你的字符串代表的不是一个时间,而是一段时间间隔。对于这种情况,我们可以使用TimeSpan

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

1
谢谢。我不知道那个问题,结果只有部分是它的问题,还有另一个问题。所以感谢您帮助我找出故障所在。 - Clarkinator

1

除了@rob的答案之外,另一个选项是使用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.  
    }

0
 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");

                    }

欢迎来到Stack Overflow!虽然这段代码可能是解决方案,但包括解释真的有助于提高您的帖子质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您提出代码建议的原因。 - Kurt Van den Branden

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接