Конечно. Вы можете использовать метод DateTime.ParseExact
. Существует несколько перегрузок функции.
Одна из перегрузок - ParseExact(String, String[], IFormatProvider, DateTimeStyles)
.
Преобразует заданное строковое представление даты и времени в его DateTime эквивалентном, используя заданный массив форматов, культуры специфической информации о формате и стиле. Формат строкового представления должен соответствовать точно одному из указанных форматов или генерируется исключение.
string[] formats= {"MMM dd yyyy", "dd MMM"};
var dateValue = DateTime.ParseExact(dateString,
formats,
CultureInfo.InvariantCulture,
DateTimeStyles.None);
Имейте в виду, что формат строкового представления должен соответствовать по крайней мере один из указанных форматов точно или исключение. Если вы не хотите явно использовать блок try/catch
, тогда ваш лучший выбор будет TryParseExact
. Это вернет true
, если параметр был успешно преобразован; в противном случае, false
.
DateTime dateValue;
Nullable<DateTime> result = DateTime.TryParseExact(dateString, formats,
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dateValue)) ?
dateValue :
(DateTime?)null;
«пытается разобрать дату строки с первыми и вторыми форматами, и если один возврат DateTime чем сравнить с типом DateTime» Вам не нужно Разбирает два раза, вам нужно только добавить два формата в это – Ian