В моем приложении есть сетка данных, которая заполняется информацией из базы данных SQLserver. Среди прочего данные, которые заполняют сетку, включают времена. Теперь я некоторое время боролся за то, чтобы данные из БД выглядели так, как я хотел. В конце концов, мой sql comman включил следующее: -
LEFT(CONVERT(VARCHAR(8), te.StartTime, 8), 5) AS [Start Time],
LEFT(CONVERT(VARCHAR(8), te.FinishTime, 8), 5) AS [Finish Time]
Который хорошо показывает время в формате 8:00 и 10:00 и т. Д.
Однако это позже вызывает проблему в моем приложении, когда мне нужно использовать информацию в сетке данных для вычисления разницы между двумя значениями. Это потому, что (я полагаю) моя команда SQL (выше) покрыла время для строк. Поэтому, когда я пытаюсь, например, следующее:
DateTime startTime = (DateTime)varValue;
DateTime endTime = (DateTime)varFinish;
Я получаю сообщение об ошибке «Неверное приведение». Поэтому я столкнулся с преобразованием этих строк обратно в DateTime для выполнения любых вычислений с ними. Я не могу просто добавить исходные поля времени в команду SQL, потому что иногда время в сетке будет новым временем, введенным пользователем, поэтому в любом случае это будут строки.
Как мне лучше всего преобразовать пользовательский ввод, например «8:00» в дату-время - так что я могу выполнять такие функции, как вычисление разницы между двумя разами. Или, в качестве альтернативы, если я расскажу о проблеме с расписанием по-другому.
Любой совет будет с благодарностью. Я довольно новичок в C #, как вы уже догадались.