Абсолютно - используйте DateTime.ParseExact
:
DateTime parsed = DateTime.ParseExact(text, "yyyyMMddHHmm",
CultureInfo.InvariantCulture);
Обратите внимание на HH
для 24-часового режима вместо hh
для 12-часового формата.
В качестве альтернативы вы можете использовать DateTime.TryParseExact
, который возвращает значение true / false, чтобы указать, был ли разбор успешным.Если вы полностью ожидаете, что все данные будут действительными, и в противном случае целесообразно выдать исключение, тогда DateTime.ParseExact
подойдет.
В качестве совершенно другой альтернативы вы можете использовать NodaВремя :
// Do this once...
var pattern = LocalDateTimePattern.CreateWithInvariantInfo("yyyyMMddHHmm");
// Do this repeatedly...
var parseResult = pattern.Parse(text);
if (parseResult.Success)
{
LocalDateTime value = parseResult.Value;
// Use the value...
}
else
{
// Error...
}
Или для поведения "просто выбросить исключение", просто используйте parseResult.Value
безоговорочно.
РЕДАКТИРОВАТЬ: В стороне, есть ли причина почему вы храните даты в столбце varchar?Можете ли вы вместо этого исправить свою схему?