Вы должны указать, какую культуру вы хотите использовать при преобразовании строки в дату.
Культура, которую вы должны использовать, зависит от того, какая культура датируется форматированием.Например, если все даты вы разборе отформатированы как словацкий:
String s = "24. 10. 2011";
Затем вам нужно разобрать строку, как если бы это было в Словакии (Словакия) (sk-SK
) культура:
//Bad:
d = DateTime.Parse(s);
//Good:
d = DateTime.Parse(s, CultureInfo.CreateSpecificCulture("sk-SK")); //Slovak (Slovakia)
Если ваши даты находятся в таджикском (Таджикистан кириллицы), то вам нужно разобрать его как tg-Cryl-Tj
:
String s = "24.10.11"
DateTime d = DateTime.Parse(s, CultureInfo.CreateSpecificCulture("tg-Cryl-Tj"));
Это приводит к вопросу: какой формат даты вы используете? Вы не должны полагаться на настройку локали сервера, вы должны решить, какой формат вы хотите.
//Bad
String s = d.ToString();
//Good
String s = d.ToString(CultureInfo.CreateSpecificCulture("si-LK")); //Sinhala (Sri Lanka)
//s = "2011-10-24 12:00:00 පෙ.ව."
Я подозреваю, что вы предпочитаете делать все на английском языке. Но тогда вы должны решить, какой вариант английского языка:
en-AU
(английский Austrailia): 24/10/2011
en-IA
(Английская Индия): 24-10-2011
en-ZA
(Английская Южная Африка): 2011/10/24
en-US
(Английский США): 10/24/2011
Я подозреваю вас предпочитают English (India) (en-IA
).
Но если вы действительно не можете решить, какие культуры использовать при преобразовании даты в строки и наоборот, а также даты никогда не должно быть показано пользователю, то вы можете использовать Инвариантные культуры:
String s = "10/24/2011" //invariant culture formatted date
d = DateTime.Parse(s, CultureInfo.InvariantCulture); //parse invariant culture date
s = d.ToString(CultureInfo.InvariantCulture); //convert to invariant culture string
для человека, который голосовал, чтобы закрыть, потому что «это трудно сказать, что спрашивается здесь»: что-то путаю? –