Pergunta

Eu escrevi um aplicativo asp.net e uma das minhas rotinas de postagem simplesmente salva os dados do formulário enviados pelos usuários a uma db SQL 2005. Tudo funciona muito bem em minha máquina de desenvolvimento, mas quando eu implantar no site ao vivo Estou ficando datas inválidos do meu verificador data de análise.

Basicamente ele está esperando um formato de data americano na máquina ao vivo, mas não é isso que eu quero. O usuário precisa ser capaz de entrar no formato dd / mm / aaaa. Portanto, uma data válida como 21/10/2009 retorna erros no servidor ao vivo, mas não na minha máquina dev. Abaixo está o código que gera a exceção.

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

É possível forçar a rotina de análise que esperar a data no formato dd / mm / aaaa?

Foi útil?

Solução

Do assim:

    System.Globalization.CultureInfo cultureinfo = 
        new System.Globalization.CultureInfo("en-gb");
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);

Outras dicas

Você pode usar DateTime.ParseExact para especificar um formato esperado.

Outra opção é especificar a cultura que você deseja usar no arquivo web.config:

<system.web>
    ...
    <globalization 
        culture="da-DK" 
        uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
    />
</system.web>

Sim, ParseExact vai fazer isso como mencionado por Matt.

O código seria algo como:

dt  = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top