Это плохой формат, в основном - я не знаю, указано ли , должно ли оно быть принято или нет, но включение числового поля переменной ширины рядом с другими числовыми полями без разделителей является действительно плохая идея .
Я подозреваю парсер видит это как 09, за которым следует 92 в «взять 1 или 2 цифры за месяц» и не понимает, что2 предназначено, чтобы принадлежать части года.Это то, что будет делать синтаксический анализатор Noda Time, по крайней мере ...
Если вы не можете изменить свой формат ввода, вы должны массировать данные на месте, прежде чем пытаться их проанализировать - например,
if (text.Length == 7)
{
text = text.Substring(0, 2) + "0" + text.Substring(2);
}
// Now parse as ddMMyyyy