Подтвердить что ты не робот

Установка времени до 23:59:59

Возможный дубликат:
Как указать последнее время дня с помощью DateTime

Мне нужно сравнить диапазон дат и отсутствующие строки, дата которых является верхней датой сравнения, но время выше полуночи. Есть ли способ установить верхнее время сравнения до 23:59:59?

4b9b3361

Ответ 1

Это возможное решение:

yourDateTime.Date.AddHours(23).AddMinutes(59).AddSeconds(59);

Ответ 2

Почему бы вам не сравнить верхнее сравнение в полночь на следующий день после последнего, который вам интересен, а затем использовать это с эксклюзивным сравнением?

DateTime upperExclusive = lastInclusive.Date.AddDays(1);
if (dateInclusive >= date && date < upperExclusive)
{
    ....
}

Это похоже на более чистое решение, чем нахождение последней секунды дня - кроме всего остального вы все равно будете пропускать значения 23: 59: 59.500 и т.д. с вашей текущей схемой.

Обязательный штепсель: я не являюсь большим поклонником API даты и времени BCL. Вы можете оставить вкладки Noda Time - порт Joda Time в .NET.

Ответ 3

Если вы делаете сравнение, почему бы вам не сравнить с меньшим, чем начало следующего дня?

Eg. если это был запрос Linq:

someList.Where(x => (currentDaysDate <= x.ItemDate ) && (x.ItemDate < nextDaysDate))

Ответ 4

Создайте метод расширения EndOfDay

 public static DateTime EndOfDay (this DateTime d)
    {
        return DateTime.Parse(d.ToShortDateString().Trim() + " 23:59:59");
    }

Ответ 5

Просто используйте один день позже, чем верхнее сравнение, и < на верхней стороне вместо <=. Таким образом, вы можете получить время, которое еще больше (доля секунды), чем тот, который вы указали.

В качестве альтернативы сравните, используя свойство DateTime.Date, а не непосредственно DateTime. Это "отключит" временную часть, поэтому ваши даты в поиске будут автоматически обрабатываться как полночь.

Ответ 7

Если вас вообще не беспокоит время, вы можете использовать свойство Date DateTime, которое возвращает только часть даты (с временем, установленным на 00: 00: 0000)

if(MyDate.Date >= StartDate.Date && MyDate.Date <= EndDate.Date)
{
    //Code here
}