Это происходит потому, что стандартная культура машины говорит, что формат даты - «дд / мм / гггг», и в вашем случае месяц обозначается как «31», что неверно, поэтому он выдает ошибку.
Пожалуйста, установите культуру перед разбором даты и времени.
используйте этот код перед вашим кодом:
CultureInfo CultureInfo1 = (CultureInfo)CultureInfo.CurrentCulture.Clone();
CultureInfo1.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";
Thread.CurrentThread.CurrentCulture = CultureInfo1;
Дайте мне знать, если это поможет.