c # e Data Problemas Cultura
-
03-07-2019 - |
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?
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);