c# - 如何比较HH :MM in C#

标签 c#

您好,我必须比较 HH:MM(小时和分钟)。我该怎么做?

var t1 = DateTime.Now.ToString("HH:mm");
var t2 = "20:03";
var res =result(t1, t2);

public int result(string t1, string t2)
        {
            int i = -1;

            int hr1 = Convert.ToInt32(t1.Split(':')[0]);
            int hr2 = Convert.ToInt32(t2.Split(':')[0]);

            int min1 = Convert.ToInt32(t1.Split(':')[1]);
            int min2 = Convert.ToInt32(t2.Split(':')[1]);

            if (hr2 >= hr1)
            {
                if (min2 >= min1)
                {
                    i = 1;
                }
            }

            return i;
        }

但它是不正确的..它没有照顾到所有条件..如何使其完美。或者是否有任何内置函数仅通过输入执行此操作(我检查但没有答案)。

提前致谢

最佳答案

如果您可以假设这两个字符串的格式已经正确,只需使用:

return t1.CompareTo(t2);

毕竟,由于使用的格式,它们是按字典顺序排序的——不需要解析 :)

所有对 TimeSpan 的引用...当然,如果您使用的是 Noda Time你可以使用:

private static readonly LocalTimePattern TimePattern = 
     LocalTimePattern.CreateWithInvariantInfo("HH:mm");

...

public int CompareTimes(string t1, string t2)
{
    // These will throw if the values are invalid. Use TryGetValue
    // or the Success property to check first...
    LocalTime time1 = TimePattern.Parse(t1).Value;
    LocalTime time2 = TimePattern.Parse(t2).Value;
    return time1.CompareTo(time2);
}

(如果您愿意,您可以使用 TimeSpan,当然...但是 LocalTime 代表您获得的实际数据类型:一天中的某个时间,而不是比过去的时间还长 ;)

关于c# - 如何比较HH :MM in C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7808807/

相关文章:

c# - 使用共享契约(Contract)将电子邮件地址添加到电子邮件应用程序的字段中?

c# - LINQ 到 SQL : How to handle ambiguous column names when joining tables?

c# - .net 中的小数百分比符号

c# - C#中的多个构造函数

c# - 将带有数组的 json 结构展平为多个没有数组的平面对象

c# - 将 byte[] 转换为 String 并返回 c#

c# - 当我将 GetBody<System.IO.Stream>() 用于 BrokeredMessage 时,我得到了额外的字符串字符,但与 GetBody<string>() c# 完美配合

c# - 尝试返回 IQueryable<MyType> 时出现转换错误

javascript - 如何使用 Javascript 处理 UWP 应用程序的后退按钮?

C# 类型转换怪癖 - 接口(interface)作为泛型类型