Объедините дату и время, когда date - это DateTime, а time - это строка - PullRequest
41 голосов
/ 26 июня 2010

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

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

.

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

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

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

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

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

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

Ответы [ 5 ]

66 голосов
/ 26 июня 2010

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

DateTime newDateTime = oldDateTime.Add(TimeSpan.Parse(timeString));
9 голосов
/ 26 июня 2010
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
5 голосов
/ 05 февраля 2015

Я использовал что-то похожее на то, что говорит Сименджо, за исключением того, что я продолжал использовать его как 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);
0 голосов
/ 26 июня 2010

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

0 голосов
/ 26 июня 2010

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

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

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