Вопрос

Я написал приложение 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top