Как сравнить два DateTimes по времени только игнорируя дату? - PullRequest
19 голосов
/ 20 мая 2011

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

(02.12.2004 9:00)> (12.02.2011 8:24) - это будет правдой.

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

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

Кроме того, причина, по которой мы это делаем, заключается в том, что мы не можем заставить наше ВРЕМЯ SQL сравниваться с TIMESPAN this говорит, что это будет то же самое, но LINQ возвращает ошибку преобразования времени в bigint ».

1 Ответ

38 голосов
/ 20 мая 2011

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

var one = DateTime.Now.AddHours(1);
var two = DateTime.Now;
var diff = one.TimeOfDay - two.TimeOfDay;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...