Это очень странно. У меня есть следующий код:
Assert.AreEqual(new DateTime(2000, 1, 1), DateTime.ParseExact("2000", "yyyy", CultureInfo.InvariantCulture));
Assert.AreEqual(new DateTime(2000, 1, 1), DateTime.ParseExact("20000705", "yyyy", CultureInfo.InvariantCulture));
Первая строка проходит, вторая - "System.FormatException: String was not recognized as a valid DateTime
".
Я не могу сократить анализируемую строку, чтобы она соответствовала длине формата - это будет работать в данном конкретном случае, но это часть более общего метода, и он потерпит неудачу где-то еще. Любая идея о том, почему второй вызов не удается?
[Редактировать] Хорошо, я надеялся, что он анализирует столько входной строки, сколько необходимо для удовлетворения формата.
Я получаю много строк во многих форматах, и у меня есть один метод, который принимает оба и после небольшой обработки (я получаю только даты, поэтому я заменяю «m» на «M» и «Y») с "у" и т. д.), я звоню DateTime.ParseExact
. Причина, по которой я не могу вызвать DateTime.Parse
, заключается в том, что он не допускает аргумент форматирования ... Я могу получить ddMMyyyy в одной части программы и yyyyddMM в другой, для него нет способа правильно понять это.
[Редактировать 2] Я полагаю, это моя вина ... Мне придется усечь ввод, когда возникнет эта проблема. К счастью, у меня вообще есть все части даты в формате, это (только год) редкий случай. Спасибо за помощь.