Вместо использования метода Convert.ToDateTime
вы можете использовать методы DateTime.Parse
или DateTime.ParseExact
. Оба позволяют вам передать культуру, которая сообщает, как вы ожидаете, что дата будет отформатирована.
Метод DateTime.ParseExact
также позволяет указать ожидаемый формат, так что вы можете анализировать более или менее любой формат с помощью этого метода.
Edit:
Относительно Convert.ToDateTime
. В документации говорится, что при анализе используется текущая культура: http://msdn.microsoft.com/en-us/library/xhz1w05e.aspx
Текущую культуру можно найти с помощью свойства System.Threading.Thread.CurrentThread.CurrentCulture
.
Edit2:
Ой. Вы также можете использовать DateTime.TryParse
и DateTime.TryParseExact
, если не уверены, что данный формат недействителен.
Edit3:
Здесь много правок ... Я вижу, что вы хотите определить строку культуры, соответствующую дате, которую ввел пользователь. Здесь нет общего решения, которое гарантированно сработало бы здесь. Скажем, например, что пользователь ввел дату 01.02.11. Невозможно быть уверенным, указана ли эта дата в формате day.month.year или month.day.year или year.month.day и т. Д.
Лучшее, что вы можете сделать, - это составить список ожидаемых культур ввода и начать с наиболее вероятного и попытаться проанализировать дату, используя это. Если это не помогло, вы можете попробовать второе, скорее всего, и так далее ...
Но это действительно не рекомендуется. Либо предоставьте пользователю ожидаемый формат, либо лучше используйте поле ввода даты, которое гарантирует, что вы получите выбранную дату в соответствующем формате.