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

Добавление времени в DateTime в С#

У меня есть календарь и текстовое поле, которое содержит время суток. Я хочу создать дату-время, которое является комбинацией двух. Я знаю, что могу это сделать, посмотрев часы и монеты, а затем добавив их в календарь DateTime, но это кажется довольно грязным.

Есть ли лучший способ?

4b9b3361

Ответ 1

Вы можете использовать метод DateTime.Add(), чтобы добавить время к дате.

DateTime date = DateTime.Now;
TimeSpan time = new TimeSpan(36, 0, 0, 0);
DateTime combined = date.Add(time);
Console.WriteLine("{0:dddd}", combined);

Вы также можете создать свой временной интервал синтаксический анализ строки, если это то, что вам нужно сделать.

В качестве альтернативы вы можете использовать другие элементы управления. Вы не упомянули, используете ли вы winforms, wpf или asp.net, но существуют различные элементы выбора даты и времени, которые поддерживают выбор даты и времени.

Ответ 2

Если вы используете два объекта DateTime, один для сохранения даты другой, вы можете сделать следующее:

var date = new DateTime(2016,6,28);

var time = new DateTime(1,1,1,13,13,13);

var combinedDateTime = date.AddTicks(time.TimeOfDay.Ticks);

Пример этого можно найти здесь

Ответ 3

В зависимости от того, как вы форматируете (и проверяете!) дату, введенную в текстовое поле, вы можете сделать это:

TimeSpan time;

if (TimeSpan.TryParse(textboxTime.Text, out time))
{
   // calendarDate is the DateTime value of the calendar control
   calendarDate = calendarDate.Add(time);
}
else
{
   // notify user about wrong date format
}

Обратите внимание, что TimeSpan.TryParse ожидает, что строка будет в формате "hh: mm" (необязательные секунды).

Ответ 5

Объедините оба. Средство выбора даты также поддерживает время выбора.

Вам просто нужно изменить Format-Property и, возможно, CustomFormat-Property.

Ответ 6

   DateTime newDateTime = dtReceived.Value.Date.Add(TimeSpan.Parse(dtReceivedTime.Value.ToShortTimeString()));