c # и дата культуры проблемы
-
03-07-2019 - |
Вопрос
Я написал приложение asp.net, и одна из моих подпрограмм обратной передачи просто сохраняет данные, отправленные пользователем, в базу данных sql 2005. Все отлично работает на моей машине для разработки, но при развертывании на работающем сайте я получаю недопустимые даты из своей программы проверки даты разбора. Р>
В основном это ожидание американского формата даты на живой машине, но это не то, что я хочу. Пользователь должен иметь возможность вводить в формате дд / мм / гггг. Таким образом, действительная дата, такая как 21/10/2009, возвращает ошибки на работающем сервере, но не на моем компьютере разработчика. Ниже приведен код, который выдает исключение.
DateTime dt;
dt = DateTime.Parse(sdate);
//sdate in GB dd/MM/yyyy format
Можно ли заставить подпрограмму синтаксического анализа ожидать дату в формате дд / мм / гггг?
Решение
Делай так:
System.Globalization.CultureInfo cultureinfo =
new System.Globalization.CultureInfo("en-gb");
DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);
Другие советы
Вы можете использовать DateTime.ParseExact , чтобы указать ожидаемый формат.
Другой вариант - указать язык, который вы хотите использовать, в файле web.config:
<system.web>
...
<globalization
culture="da-DK"
uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
/>
</system.web>
Да, ParseExact сделает это, как упомянул Мэтт.
Код будет выглядеть примерно так:
dt = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);