您好,我必须比较 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/