datetime.parse и заставить его работать с определенным форматом


141

У меня есть дата и время, возвращаемое из файла XML в формате:

20080916 11:02

как в

ггггмм чч: сс

Как я могу заставить функцию datetime.parse уловить это? Т.е. разобрать без ошибок? Ура

Ответы:


250
DateTime.ParseExact(input,"yyyyMMdd HH:mm",null);

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

В документации ParseExact подробно описаны другие перегрузки на случай, если вы хотите, чтобы синтаксический анализ автоматически конвертировался в универсальное время или что-то в этом роде.

Как упоминает @ Joel Coehoorn , есть также возможность использовать TryParseExact , который вернет логическое значение, указывающее на успех или неудачу операции - я все еще использую .Net 1.1, поэтому я часто забываю об этом.

Если вам нужно проанализировать другие форматы, вы можете проверить стандартные строки формата даты и времени .


11
Не забудьте DateTime.TryParseExact ()
Джоэл Кохорн

Также: стандартный Xml имеет собственный очень специфический формат DateTime, и инструменты .Net Xml должны уметь его читать.
Джоэл Кохорн

В этом случае он работает нормально с последним параметром как нулевым, но для любого, кто найдет этот CultureInfo.InvariantCulture, в противном случае вы можете получить проблемы, если ваше datetime будет чем-то вроде «1823/01/01».
Todilo

@JoelCoehoorn standard XML specific DateTime format?
Kiquenet

10

Спасибо за совет, я использовал это, чтобы проанализировать мою дату "20071122", мне нужно было добавить стили даты и времени, я ничего не использовал, и это сработало:

DateTime dt = DateTime.MinValue;

DateTime.TryParseExact("20071122", "yyyyMMdd", null,System.Globalization.DateTimeStyles.None, out dt);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.