【发布时间】:2013-11-03 09:23:22
【问题描述】:
如何比较哪个时间字符串更大;是 24 小时制还是 12 小时制?
例如,"9:42:54" vs "19:25:31" 或 "9:42:54 AM" vs "7:25:31 PM"。
【问题讨论】:
标签: c# datetime timestamp type-conversion comparison-operators
如何比较哪个时间字符串更大;是 24 小时制还是 12 小时制?
例如,"9:42:54" vs "19:25:31" 或 "9:42:54 AM" vs "7:25:31 PM"。
【问题讨论】:
标签: c# datetime timestamp type-conversion comparison-operators
为了能够比较时间格式的字符串,需要将它们转换为 TimeSpan 或 DateTime 对象,但前者似乎更相关:
TimeSpan time1 = TimeSpan.Parse("9:42:54");
TimeSpan time2 = TimeSpan.Parse("19:25:31");
或
TimeSpan time1 = DateTime.Parse("9:42:54").TimeOfDay;
TimeSpan time2 = DateTime.Parse("19:25:31").TimeOfDay;
但是,将 TimeSpan.Parse 用于 12 小时时间字符串格式将引发 System.FormatException。改用DateTime.Parse,只占用创建的DateTime对象的时间部分:
TimeSpan time1 = DateTime.Parse("9:42:54 AM").TimeOfDay;
TimeSpan time2 = DateTime.Parse("7:42:54 PM").TimeOfDay;
作为一个好处,转换为 TimeSpan 还可以让您有机会申请 TimeSpan operators,如常规比较、减法、加法等:
if (time1 > time2)
{
// time1 is greater
}
else if (time1 < time2)
{
// time2 is greater
}
else
{
// They are equal
}
如果您需要明确指定字符串的时间格式,也可以使用TimeSpan.ParseExact。
【讨论】:
LocalTime 值,它实际上代表了我们试图代表的内容——一天中的某个时间。