Как сравнить два времени даты по времени, игнорируя только дату?

#c# #datetime #.net-4.0

#c# #datetime #.net-4.0

Вопрос:

Кажется, что все всегда игнорируют временную часть, но как бы вы сравнили два времени даты, игнорируя дату? если мы просто сравним их по ВРЕМЕНИ, то, похоже, все равно предпочтем самую старую дату.

(12/02/2004 9:00) > (12/02/2011 8:24) — это было бы правдой.

Приведенный ниже код работает, но кажется, что он немного ходит вокруг да около, сравнивая часы и минуты по отдельности.

 var results = from x in dataContext.GetTable<ScheduleEntity>()                           
              where x.LastRunDate < date.Date 
              amp;amp; x.reportingTime.Hour <= date.Hour
              amp;amp; x.reportingTime.Minute <= date.Minute
              amp;amp; x.reportingFequency.Substring(position, 1) == scheduled
              select x;  
  

Кроме того, причина, по которой мы делаем это, заключается в том, что мы не смогли сравнить наше время SQL с временным интервалом, это говорит о том, что оно было бы таким же, но LINQ возвращает «Ошибку преобразования времени в bigint».

Ответ №1:

DateTime имеет TimeOfDay свойство, вы можете использовать это для сравнения времени для двух дат следующим образом:

 var one = DateTime.Now.AddHours(1);
var two = DateTime.Now;
var diff = one.TimeOfDay - two.TimeOfDay;