Это возможное решение:
yourDateTime.Date.AddHours(23).AddMinutes(59).AddSeconds(59);
Почему бы не использовать верхнее сравнение - это полночь дня после последнего интересующего вас, а затем использовать его с эксклюзивным сравнением?
DateTime upperExclusive = lastInclusive.Date.AddDays(1);
if (dateInclusive >= date && date < upperExclusive)
{
....
}
Это кажется более чистым решением, чем поиск последней секунды дня - помимо всего прочего, в вашей текущей схеме все равно будут отсутствовать значения 23: 59: 59.500 и т. д.
Обязательный плагин: я не большой поклонник BCL date / time API. Вы можете следить за Noda Time - портом Joda Time на .NET.
Просто используйте на день позже, чем верхнее сравнение, и <
в верхней части вместо <=
. Таким образом, вы можете получить время даже позже (доли секунды), чем указанное вами.
Как вариант, сравните, используя свойство DateTime.Date
, а не DateTime напрямую. Это «уберет» временную часть, поэтому ваши даты в поиске будут автоматически считаться полуночью.
Создать метод расширения EndOfDay
public static DateTime EndOfDay (this DateTime d)
{
return DateTime.Parse(d.ToShortDateString().Trim() + " 23:59:59");
}
Да, этот конструктор DateTime - http://msdn.microsoft.com/en-us/library/272ba130.aspx позволяет указать дату, а также часы, минуты и секунды.
Если вас совсем не беспокоит время, вы можете использовать свойство Date
для DateTime
], который возвращает только дату (с установленным временем 00: 00: 0000)
if(MyDate.Date >= StartDate.Date && MyDate.Date <= EndDate.Date)
{
//Code here
}
Если вы проводите сравнение, почему бы вам не сравнить с меньшим, чем начало следующего дня?
Например. если это был запрос Linq:
someList.Where(x => (currentDaysDate <= x.ItemDate ) && (x.ItemDate < nextDaysDate))