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

Объединить дату и время, когда дата DateTime, а время - строка

Я работаю со старой базой mysql, в которой дата хранится (без времени) в качестве даты и времени хранится как строка (без даты).

В С# я есть DateTime со значением вроде 2010-06-25 12:00:00 AM и String со значением, как 15:02.

Каков наиболее краткий способ объединить их без большого количества накладных расходов?

Я пробовал несколько методов, включая:

DateTime NewDateTime = DateTime.Parse(OldDateTime.ToString("yyyy-MM-dd ") + TimeString);

Мне не нравится преобразовывать существующее DateTime в строку и добавлять время.

Я могу преобразовать строку времени в дату, но затем я получаю сегодняшнюю дату и добавляю ее, поскольку количество тиков в старом datetime неверно.

Примечание. Не беспокойтесь о проверке, это делается в другом месте. Время представлено с использованием 24-часового формата без секунд.

4b9b3361

Ответ 1

Вы можете использовать TimeSpan.Parse для анализа времени, а затем добавить результат к дате:

DateTime newDateTime = oldDateTime.Add(TimeSpan.Parse(timeString));

Ответ 2

var dt = new DateTime(2010, 06, 26); // time is zero by default
var tm = TimeSpan.Parse("01:16:50");
var fullDt = dt + tm; // 2010-06-26 01:16:50

Ответ 3

Я использовал что-то похожее на то, что говорит simendsjo, но я продолжал использовать его как DateTime

DateTime date = Convert.ToDateTime(txtTrainDate.Text);
DateTime time = Convert.ToDateTime(ddTrainTime.SelectedValue);
DateTime dtCOMPLTDTTM = new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second);

Ответ 4

Я думаю, что вы слишком беспокоитесь о преобразовании строк. Объединив два строковых элемента вместе, вы все равно сохраняете синтаксический анализ строки даты, что, скорее всего, будет более дорогостоящим.

Повторяется ли это много раз или простой шаг в более крупном процессе?

Ответ 5

Я уверен, что вы можете комбинировать и преобразовывать эти значения в метку времени с помощью SQL.