С# TryParseExact CultureInfo.InvariantCulture Изменение поведения при изменении культуры
Я пытаюсь преобразовать дату со следующим форматом: "d/MM/yyyy"
пример:
5/11/2014 12/12/2013 31/01/2012
Я использую метод TryParseExact:
private const string DateFormat = "d/MM/yyyy";
Culture = CultureInfo.InvariantCulture;
DateTime creationDateConverted;
DateTime.TryParseExact(creationDate, DateFormat, Culture,
DateTimeStyles.None, out creationDateConverted);
Метод отображения:
@Html.DisplayFor(m => object.date)
date having : DisplayFormat( DataFormatString="{0:d/MM/yyyy}")
Сервер, на котором размещен сайт, имеет американскую культуру.
если я установил культуру в fr-FR, используя Web.config, она работает хорошо.
Но если я не настрою эту культуру, это не сработает, оно конвертирует его в формат MM/dd/yyyy, и, конечно, какая-то дата не проходит с этим форматом.
Я не понимаю, почему культура повлияла на этот метод, потому что я предоставляю конкретный формат и культурный инвариант.
Я также пытался предоставить Культуру fr-Fr методу, но не повезло
EDIT: когда я говорю об ошибке, я имею в виду, что метод TryParseExact возвращает false
DateTime не имеет формата. И вывод метода ToString зависит от культуры.
Если вы хотите, чтобы определенный формат использовал это:
creationDateConverted.ToString("d/MM/yyyy");
Выбранный вами код анализа не зависит от настроек внешней культуры.
Тем не менее, культура может повлиять на то, что происходит, когда вы запрашиваете значение DateTime
creationDateConverted
.