Obtendo datas em Português com PHP

Atenção! Essa postagem foi escrita há mais de 2 anos. Na informática tudo evolui muito rápido e algumas informações podem estar desatualizadas. Embora o conteúdo possa continuar relevante, lembre-se de levar em conta a data de publicação enquanto estiver lendo. Caso tenha sugestões para atualizá-la, não deixe de comentar!

Prefácio

Já é sabido que programadores tendem a fazer gambiarras na hora de traduzir certos termos de uma aplicação, tais como os dias da semana. Foi durante uma conversa com um amigo que percebi que muita gente não sabe obter as datas em português automaticamente. Alterando o local do PHP você pode adquirir as propriedades de determinado país. A função que precisaremos para realizar esta mágica é a setlocale().

Conceito

O código abaixo irá fazer com que as propriedades locais do sistema sejam alteradas para o formato brasileiro.

Em servidores configurados em formato brasileiro, ou seja, que já tem Brazilian Portuguese configurado no locale, apenas a linha 3 poderá ser suficiente.
Em servidores estrangeiros, talvez apenas a linha 4 seja suficiente.

Para deixar o código portável, utilizaremos os dois modos.

[php][/php]

A função utilizada para puxar os dados da data é a gmstrftime() porque ela leva em consideração o local.
O retorno desta função é o dia da semana, por extenso, em português! :)

LC_ALL é uma constante que indica que as informações locais serão definidas em todas as instâncias. LC_ALL engloba LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC e LC_TIME.

Outras possibilidades com a alteração do local é obter dados monetários. A função localeconv() retorna uma array com as propriedades monetárias da região.

O retorno de

[php][/php]

será:

[sourcecode]Array
(
[decimal_point] => ,
[thousands_sep] => .
[int_curr_symbol] => BRL
[currency_symbol] => R$
[mon_decimal_point] => ,
[mon_thousands_sep] => .
[positive_sign] =>
[negative_sign] => –
[int_frac_digits] => 2
[frac_digits] => 2
[p_cs_precedes] => 1
[p_sep_by_space] => 1
[n_cs_precedes] => 1
[n_sep_by_space] => 1
[p_sign_posn] => 3
[n_sign_posn] => 3
[grouping] => Array
(
[0] => 3
)

[mon_grouping] => Array
(
[0] => 3
)

)[/sourcecode]

Conclusão

É possível fazer muitas coisas alterando o local. No Manual do PHP você encontra outras utilizações para estas funções.

Lembrando sempre que é divertido brincar com as funções do PHP! :P

Um grande abraço e uma ótima semana a todos!
Fiquem com Deus!

Rafael Jaques