Анализ строкового представления DateTime - сложная задача, потому что разные культуры имеют разные форматы даты. .Net знает об этих форматах дат и извлекает их из вашей текущей культуры (System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat
), когда вы звоните DateTime.Parse(this.Text)
;
Например, строка «22/11/2009» не соответствует ShortDatePattern для США (en-US), но соответствует Франции (fr-FR).
Теперь вы можете либо позвонить DateTime.ParseExact
и передать ожидаемую строку формата, либо вы можете передать в соответствующей культуре DateTime.Parse
для анализа даты.
Например, это правильно проанализирует вашу дату:
DateTime.Parse( "22/11/2009", CultureInfo.CreateSpecificCulture("fr-FR") );
Конечно, вы должны не просто случайно выбрать Францию, но что-то подходящее вашим потребностям.
Что вам нужно выяснить, так это то, на что настроен System.Threading.Thread.CurrentThread.CurrentCulture
, и если / почему он отличается от того, что вы ожидаете.