Durante o desenvolvimento de aplicações voltadas à Internet (ou até mesmo com soluções concebidas para uma rede interna em uma organização) é bastante comum a existência de instruções convertendo datas e/ou valor financeiros, além da necessidade de exibição de tais valores em tela (em se tratando de um site). Embora muitos programadores partam da premissa que o ambiente em que uma aplicação ficará hospedada para uso definitivo estará devidamente configurada, contando para isto com as mesmas definições que existiam no ambiente de desenvolvimento, isto muitas vezes acaba por não acontecer na prática.

Os motivos em tais casos são os mais diversos: a utilização de servidores de hospedagem que se encontram em outros países (e que, portanto, podem estar com configurações regionais seguindo padrões diferentes daqueles esperados por usuários da aplicação), máquinas que funcionam como servidor e que não tiveram suas configurações ajustadas para um determinado padrão regional ou ainda, uma falta de atenção da parte dos envolvidos na implementação em definir explicitamente o padrão a ser empregado para datas e valores numéricos.

Supondo um cenário em que uma aplicação Web (site em ASP.NET ou serviço WCF) acessa informações que constam em arquivos XML, é bem provável que a solução implementada manipule informações como datas e valores monetários. Em ou mais pontos dos componentes que foram codificados, poderão ocorrer uma série de conversões, como strings sendo transformadas para o equivalente em tipos como DateTime e decimal. A Listagem 1 ilustra um exemplo disto.

Listagem 1: Exemplo de conversão de data que pode resultar em erro



...

private void ProcessarInformacoes()
{
    string dataSolicitacao; // Variável a ser preenchida posteriomente


    // Outras instruções para manipulação de informações
    // de um arquivo XML
    ...


    // Converte a data obtida a partir de um arquivo XML
    DateTime data = Convert.ToDateTime(dataSolicitacao);
}

...

Considerando que o método apresentado na Listagem 1 tenha sido testado pelo desenvolvedor em um computador seguindo os padrões de configurações regionais do Brasil, existirá a probabilidade de erros quando a aplicação for implantada, uma vez que o formato de data não foi especificado na instrução que realizada a conversão. Se o servidor que hospedará a solução estiver configurado para o padrão norte-americano, uma página Web que dependa de maneira direta ou não da operação ProcessarInformacoes poderá, dessa forma, gerar um erro similar àquele demonstrado na Figura 1 (levando em conta para isto a tentativa de se converter a string “25/12/2011” para uma data equivalente, segundo o formato utilizado no Brasil).

Erro de conversão em uma página ASP.NET Web Forms

Figura 1: Erro de conversão em uma página ASP.NET Web Forms

Uma maneira de se solucionar este tipo de problema sem alterações no código-fonte consiste, basicamente, em definir a cultura no arquivo Web.config. Dentro deste último faz-se necessário então declarar o elemento “globalization”, especificando no atributo “culture” o valor “pt-BR” (o qual indica que as configurações regionais do Brasil serão adotadas). A Listagem 2 apresenta um exemplo disto.

Listagem 2: Configurando o elemento globalization no Web.config



<?xml version="1.0"?>
<configuration>

  ...

  <system.web>

    ...

    <globalization culture="pt-BR" ... />

    ...

  </system.web>

  ...

</configuration>

Com este ajuste no Web.config evitam-se, assim, erros de conversão de datas (como aquele da Figura 1) e valores numéricos. Existem outras formas de se resolver este tipo de problema, porém a maneira aqui discutida pode ser empregada sem maiores dificuldades, facilitando a configuração de sites e Web Services nos quais não há a necessidade de se tratarem formatos de diferentes países. Espero que este artigo possa ser útil no seu dia-a-dia. Até uma próxima oportunidade!