Я думал, что это будет легко:
Я хочу разобрать следующий формат строки в DateTime
:
"4/25/18 15:11"
и это намного сложнее, чем я ожидал.
DateTime.Parse
просто возвращает исключение Input string not in the correct format
DateTime.TryParseExact
является ближайшим из всех, к которым я пришел, и может анализировать эту точную строку, но не учитывает, когда день, месяц, час (и т. Д.) Заканчиваются (или ниже, в зависимости от маски) 9, так как маска должна точно соответствовать, иначе она потерпит неудачу.
string input = "4/25/18 3:11 PM";
string input2 = "1/1/18 10:10 AM";
DateTime theDate;
DateTime.TryParseExact(input, "M/dd/yy h:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out theDate);
Моей следующей идеей было разделить 4
, 25
, 18
и добавить 0, если они <10, и 20, объединенные до 18, но это кажется излишним. Это также оставляет мне время и условия, основанные на том, является ли <code>tt AM или PM.
РЕДАКТИРОВАТЬ: На основе некоторых комментариев ....
У меня нет контроля над входной строкой.
Convert.ToDateTime("25/4/18 3:11 PM")
выдает исключение {"String was not recognized as a valid DateTime."}
Когда я указал дату ввода как 25.04.18, формат ввода явно M / dd / yy. К сожалению, это может означать, что вводимая дата может быть ММ / д / гг и т. Д. Мы можем предположить, что она всегда будет Месяц / День / Год.
TLDR: Как я могу чисто проанализировать input
и input2
в DateTime?
Спасибо