【问题标题】:Compare 2 strings of time in C#在 C# 中比较 2 个时间字符串
【发布时间】:2016-06-14 03:03:20
【问题描述】:

所以我有一个字符串 00:00:15:185 我需要告诉它大于 15 秒。

时间格式为 HH:m:ss:FFF

这显然超过 15 秒,但我无法正确比较。

当前代码是这样的:

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

当我一直运行它时它会给出异常,而程序在它应该运行时却无法运行

【问题讨论】:

标签: c# string datetime


【解决方案1】:

您的字符串不代表时间,而是时间的数量。为此,我们有 TimeSpan

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

【讨论】:

  • 谢谢。我不知道这一点,事实证明这只是部分原因,而是另一个问题。所以谢谢你帮我找出问题所在。
【解决方案2】:

另一个选项(除了@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.  
    }

【讨论】:

    【解决方案3】:
     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!虽然这段代码 sn-p 可能是解决方案,但包含解释确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
    猜你喜欢
    • 2019-11-10
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2018-02-23
    相关资源
    最近更新 更多