Ответ 1
Вы можете использовать TimeSpan.Parse для анализа времени, а затем добавить результат к дате:
DateTime newDateTime = oldDateTime.Add(TimeSpan.Parse(timeString));
Я работаю со старой базой 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-часового формата без секунд.
Вы можете использовать TimeSpan.Parse для анализа времени, а затем добавить результат к дате:
DateTime newDateTime = oldDateTime.Add(TimeSpan.Parse(timeString));
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
Я использовал что-то похожее на то, что говорит 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);
Я думаю, что вы слишком беспокоитесь о преобразовании строк. Объединив два строковых элемента вместе, вы все равно сохраняете синтаксический анализ строки даты, что, скорее всего, будет более дорогостоящим.
Повторяется ли это много раз или простой шаг в более крупном процессе?
Я уверен, что вы можете комбинировать и преобразовывать эти значения в метку времени с помощью SQL.