PHP – Como fazer a função date() formatar uma data em português?

PHP – Como fazer a função date() formatar uma data em português?

13 de agosto de 2018 1 Por Ramos de Souza Janones
Do Zero ao Profissional com PHP. Mais de 2.300 alunos recomenda.Powered by Rock Convert

Abordagem com strftime

Use strftime() para criar a data por extenso, pois essa função pega automaticamente o locale. Como citado pelo @bfavaretto, basta informar o locale.

strftime() nas palavras do manual:

Formata uma hora/data local de acordo com o configuração de locale. Nome do mês e dia da semana e outras strings dependem do atual local definido com setlocale().

setlocale(LC_TIME, ‘pt_BR’, ‘pt_BR.utf-8’, ‘pt_BR.utf-8’, ‘portuguese’);
date_default_timezone_set(‘America/Sao_Paulo’);
echo strftime(‘%A, %d de %B de %Y’, strtotime(‘today’));
saida:

quinta-feira, 06 de março de 2014
%A: dia da semana por extenso.

%d: dia do mês representado com dois digitos.

%B: mês por extenso.

%Y: ano representado com quatro digitos.

Exemplo – strftime

Abordagem com IntlDateFormatter

É possivel também obter o mesmo resultado com as classes DateTime e IntlDateFormatter.

Os formatos de data e hora são:

Data
Constante |Saida
FULL |segunda-feira, 1 de setembro de 2014
TRADITIONAL|segunda-feira, 1 de setembro de 2014
LONG |1 de setembro de 2014
MEDIUM |01/09/2014
SHORT |01/09/14
NONE |

Hora
Constante |Saida
FULL |03h00min00s GMT+00:00
TRADITIONAL|03h00min00s GMT+00:00
LONG |03h00min00s GMT+00:00
MEDIUM |03:00:00
SHORT |03:00
NONE |

Exemplo – formato data/hora

No construtor é necessario informar quatro argumentos: locale, formato da data, formato da hora e o tipo de calendário:

<?php
date_default_timezone_set('America/Sao_Paulo');

$data = new DateTime();
$formatter = new IntlDateFormatter('pt_BR',
                                    IntlDateFormatter::FULL,
                                    IntlDateFormatter::NONE,          
                                    IntlDateFormatter::GREGORIAN);
echo $formatter->format($data);

Exemplo – IntlDateFormatter

Para uma saida personalizada use o método setPattern() e especifique o formato conforme a documentação

Relacionada:

De acordo com a documentação, há:

  • LC_ALL for all of the below
  • LC_COLLATE for string comparison, see strcoll()
  • LC_CTYPE for character classification and conversion, for example strtoupper()
  • LC_MONETARY for localeconv()
  • LC_NUMERIC for decimal separator (See also localeconv())
  • LC_TIME for date and time formatting with strftime()
  • LC_MESSAGES for system responses (available if PHP was compiled with libintl)

Ou seja, ao utilizar LC_ALL estará afetando todos os itens descritos, incluindo o LC_NUMERIC, que define a formatação dos números. Caso queira que apenas a configuração de datas sefa afetada, basta alterar para LC_TIME:

setlocale(LC_TIME, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');

 

LEIA TAMBÉM:  Ferramentas open-source para auxiliar o teste de softwares

Outros tutoriais e dicas sobre PHP:

Subscribe to our mailing list

* indicates required


Além de PHP e MySQL, deseja receber outro tema?

LEIA TAMBÉM:  Como Aprender Java e além!
Email Format


Powered by Rock Convert
Powered by Rock Convert

Ramos de Souza Janones

Janones, é um empreendedor brasileiro apaixonado por empreendedorismo e tecnologia. Ao longo dos anos trabalhando com o desenvolvimento de softwares desktop desde a linguagem Clipper, passando pelo Delphi e atualmente com Java.

Optou pela formação de Publicidade e Marketing por sua segunda empresa de tecnologia ter participado do "boom" da internet nos anos 90 e na procura de melhorar seus conhecimentos em negócios.

Em razão da principal formação e profundos conhecimentos em programação e banco de dados, é capaz de realizar o desenvolvimento de aplicativos web, desktop e mobile com maior criatividade e inovação que profissionais de desenvolvimento com uma formação única e mais especifica, dedicada somente ao desenvolvimento de softwares.

Com toda sua experiência com empresas de software, sua formação e paixão por negócios escreveu o livro "Marketing para Empresas e Profissionais de Software", publicado pela editora carioca Ciência Moderna em 2012. Além de outros livros sobre programação.

Últimos posts por Ramos de Souza Janones (exibir todos)

Sumário
PHP - Como fazer a função date() formatar uma data em português?
Nome do artigo
PHP - Como fazer a função date() formatar uma data em português?
Descrição
Use strftime() para criar a data por extenso, pois essa função pega automaticamente o locale. Como citado pelo @bfavaretto, basta informar o locale.
Autor
Nome
Ramos da Informática
Logo