c # и дата культуры проблемы - PullRequest
4 голосов
/ 05 марта 2009

Я написал приложение asp.net, и одна из моих процедур обратной передачи просто сохраняет данные, отправленные пользователем, в базу данных sql 2005. Все отлично работает на моей машине для разработки, но при развертывании на работающем сайте я получаю недопустимые даты из своей программы проверки даты разбора.

В основном это ожидание американского формата даты на живой машине, но это не то, что я хочу. Пользователь должен иметь возможность вводить в формате дд / мм / гггг. Таким образом, действительная дата, такая как 21/10/2009, возвращает ошибки на работающем сервере, но не на моем компьютере разработчика. Ниже приведен код, который выдает исключение.

DateTime dt;
dt = DateTime.Parse(sdate);  
//sdate in GB dd/MM/yyyy format

Можно ли заставить подпрограмму синтаксического анализа ожидать дату в формате дд / мм / гггг?

Ответы [ 4 ]

9 голосов
/ 05 марта 2009

Делай так:

    System.Globalization.CultureInfo cultureinfo = 
        new System.Globalization.CultureInfo("en-gb");
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);
6 голосов
/ 05 марта 2009

Вы можете использовать DateTime.ParseExact , чтобы указать ожидаемый формат.

4 голосов
/ 05 марта 2009

Другой вариант - указать язык, который вы хотите использовать, в файле web.config:

<system.web>
    ...
    <globalization 
        culture="da-DK" 
        uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
    />
</system.web>
2 голосов
/ 05 марта 2009

Да, ParseExact сделает это, как упомянуто Мэттом.

Код будет выглядеть примерно так:

dt  = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
...