DateTime.Now.AddDays(-1) получит дату-время ровно 24 часа назад, но как мне получить время за вчерашний день в определенный час?

#c# #asp.net #datetime #visual-studio-2012

#c# #asp.net #datetime #visual-studio-2012

Вопрос:

Я хочу каким-то образом указать время в моем Datetime.Now so, например, я знаю, что

 DateTime.Now.AddDays(-1);
  

получит дату за вчерашний день ровно 24 часа назад, но я хочу получить дату за вчерашний день в определенное время, например, 5 вечера.

Я не могу найти ничего полезного в связи с этим в StackOverflow, какие-либо предложения?

Комментарии:

1. Дата останется неизменной для вчерашнего дня каждый раз, когда вы переходите к AddDays, если вам нужно время, вы можете использовать время, которое вы уже знаете, например, 5 вечера

2. 1) Вы можете создать интервал времени для вычитания с настоящего момента до нужного вам времени, а затем добавить его в виде минут / часов или как вам больше нравится…;

Ответ №1:

Использовать:

 DateTime.Now.Date.AddDays(-1).AddHours(17);
  

Комментарии:

1. Это (или ответ Нихила) должно было быть принято. Я сам предпочитаю однострочный вариант, но оба являются действительными ответами.

2. @dubbreak 15 голосов за явно неправильный ответ? Это возвращает время 7 часов назад.

Ответ №2:

Вы можете создать экземпляр TimeSpan и удалить / добавить DateTime.Now .

или

 DateTime dt = DateTime.Now.AddDays(-1);

DateTime newdt = New DateTime(dt.Year, dt.Month, dt.Day, 17, 0, 0);
  

Комментарии:

1. 5 вечера, но кроме этого места на

2. @Liath: Готово. Спасибо.