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

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

Каждый раз, когда я создаю не-nullable datetime в моем приложении mvc3, он по умолчанию имеет значение now(), где сейчас текущая дата с текущим временем. Я хотел бы по умолчанию использовать его на сегодняшний день с 12am в качестве времени.

Я пытаюсь по умолчанию использовать время в моем mvc... но... следующее не устанавливается в сегодняшнюю дату @12am. Вместо этого он по умолчанию имеет текущую дату и время.

private DateTime _Begin = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 12, 0, 0);
public DateTime Begin { get { return _Begin; } set { _Begin = value; } } 

Как я могу установить значение 12am для текущей даты для non-nullable datetime?

4b9b3361

Ответ 1

Вы можете использовать свойство Date объекта DateTime - например

DateTime midnight = DateTime.Now.Date;

Итак, ваш пример кода станет

private DateTime _Begin = DateTime.Now.Date;
public DateTime Begin { get { return _Begin; } set { _Begin = value; } }

PS. Возвращаясь к исходному коду, установка часов 12 даст вам время полудня для текущего дня, поэтому вместо этого вы могли бы использовать 0...

var now = DateTime.Now;
new DateTime(now.Year, now.Month, now.Day, 0, 0, 0);

Ответ 2

Я полагаю, что вы ищете DateTime.Today. В документации говорится:

Объект, для которого установлена сегодняшняя дата, а для компонента времени установлено значение 00:00:00.

http://msdn.microsoft.com/en-us/library/system.datetime.today.aspx

Ваш код будет

DateTime _Begin = DateTime.Today;

Ответ 3

Используя некоторые из приведенных выше рекомендаций, следующая функция и код работают для поиска диапазона дат:

Установите дату, когда компонент времени установлен на 00:00:00

public static DateTime GetDateZeroTime(DateTime date)
{
    return new DateTime(date.Year, date.Month, date.Day, 0, 0, 0);
}

Использование

var modifieddatebegin = Tools.Utilities.GetDateZeroTime(form.modifieddatebegin);

var modifieddateend = Tools.Utilities.GetDateZeroTime(form.modifieddateend.AddDays(1));

Ответ 4

Нужно только установить его

DateTime.Now.Date

Console.WriteLine(DateTime.Now.Date.ToString("yyyy-MM-dd HH:mm:ss"));
Console.Read();

Это показывает

"2017-04-08 00:00:00"

на моей машине.

Ответ 5

Большинство предлагаемых решений могут вызвать 1-дневную ошибку в зависимости от времени, связанного с каждой датой. Если вы ищете целое число календарных дней между датами, независимо от времени, связанного с каждой датой, я обнаружил, что это хорошо работает:

return (dateOne.Value.Date - dateTwo.Value.Date).Days;

Ответ 6

Связанные, поэтому я думал, что я буду публиковать для других. Если вы хотите найти UTC начала сегодняшнего дня (для вашего часового пояса), следующий код работает для любого смещения UTC (-23.5 - +23.5). Похоже, что мы добавляем X часов, а затем вычитаем X часов, но важная вещь - это ".Date" после добавления.

double utcOffset= 10.0;  // Set to your UTC offset in hours (eg. Melbourne Australia)
var now = DateTime.UtcNow;

var startOfToday = now.AddHours(utcOffset - 24.0).Date;
startOfToday = startOfToday.AddHours(24.0 - utcOffset);

Ответ 7

Попробуй это:

DateTime Date = DateTime.Now.AddHours(-DateTime.Now.Hour).AddMinutes(-DateTime.Now.Minute)
   .AddSeconds(-DateTime.Now.Second);

Результат будет выглядеть следующим образом:

29.07.2009 00:00:00