Добавление времени в DateTime в C # - PullRequest
55 голосов
/ 27 января 2010

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

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

Ответы [ 6 ]

91 голосов
/ 27 января 2010

Вы можете использовать метод 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, но существуют различные средства выбора даты и времени, которые поддерживают выбор даты и времени.

8 голосов
/ 06 июля 2015

Если вы используете два объекта 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 голосов
/ 28 января 2010

Использование https://github.com/FluentDateTime/FluentDateTime

DateTime dateTime = DateTime.Now;
DateTime combined = dateTime + 36.Hours();
Console.WriteLine(combined);
3 голосов
/ 27 января 2010

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

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 ожидает, что строка будет в формате «чч: мм» (необязательные секунды).

1 голос
/ 28 июня 2017
   DateTime newDateTime = dtReceived.Value.Date.Add(TimeSpan.Parse(dtReceivedTime.Value.ToShortTimeString()));
0 голосов
/ 27 января 2010

Объедините оба. Date-Time-Picker также поддерживает выбор времени.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...