假设我们有:
DateTime t1 = DateTime.Parse("2012/12/12 15:00:00.000");
和
DateTime t2 = DateTime.Parse("2012/12/12 15:03:00.000");
如何在C#中比较时间并判断哪个时间是“晚于”另一个时间?
<
、<=
、>
、>=
和 ==
运算符都可以直接用于 DateTime
和 TimeSpan
对象。因此,以下示例代码是可行的:
DateTime t1 = DateTime.Parse("2012/12/12 15:00:00.000");
DateTime t2 = DateTime.Parse("2012/12/12 15:03:00.000");
if(t1.TimeOfDay > t2.TimeOfDay) {
//something
}
else {
//something else
}
使用DateTime.Compare方法:
DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;
if (result < 0)
relationship = "is earlier than";
else if (result == 0)
relationship = "is the same time as";
else
relationship = "is later than";
Console.WriteLine("{0} {1} {2}", date1, relationship, date2);
编辑:如果你只是想比较时间而忽略日期,你可以使用其他人建议的TimeOfDay
。如果你需要更粗略的内容,你也可以使用Hour
和Minute
属性。
看这些例子,它们解释了在C#中的时区转换。
var startTime = new System.TimeSpan(23,0,0);
var endTime = new System.TimeSpan(02,0,0);
var startDateTime = new DateTime(DateTime.UtcNow.Date.Year, DateTime.UtcNow.Date.Month, DateTime.UtcNow.Date.Day, startTime.Hours, startTime.Minutes, startTime.Seconds);
var endDateTime = new DateTime(DateTime.UtcNow.Date.Year, DateTime.UtcNow.Date.Month, DateTime.UtcNow.Date.Day, endTime.Hours, endTime.Minutes, endTime.Seconds);
var cetTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
var startConvertedTime = TimeZoneInfo.ConvertTimeFromUtc(startDateTime, cetTimeZone);
var endConvertedTime = TimeZoneInfo.ConvertTimeFromUtc(endDateTime, cetTimeZone);
Console.WriteLine(startConvertedTime.TimeOfDay);
Console.WriteLine(endConvertedTime.TimeOfDay);
var currentTime = new TimeSpan(03,0,0);
Console.WriteLine(currentTime);
Console.WriteLine(currentTime >= startConvertedTime.TimeOfDay && currentTime <= endConvertedTime.TimeOfDay);