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
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

Curso completo de Games, inclusive Realidade Aumentada.Powered by Rock Convert

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');

Em resumo

As necessidades vão surgindo e eu vou compartilhando com vocês.

Ao usar a função date() para retornar o mês por extenso, o nome ficava em inglês.

echo date("F/Y", strtotime("2016-09-22"));
// September/2016

Segundo o site oficial “Para formatar datas em outros idiomas, você deve utilizar as funções setlocale() e strftime() em vez de date()“.

Segui o conselho e cheguei ao código abaixo:

setlocale(LC_ALL, 'pt_BR', 'pt_BR.utf-8', 'pt_BR.utf-8', 'portuguese');
echo ucfirst( utf8_encode( strftime("%B de %Y", strtotime("2016-09-22") ) ) );
// Setembro de 2016

obs. usei a função ucfirst() para tornar a primeira letra em maiúsculo.

MAIS SOBRE PHP:

– PHP – Como assinar um PDF digitalmente: Certificado Digital

LINUX – Como ter duas versões do PHP no mesmo servidor Apache?

– Exportar uma página HTML para PDF com PHP

– PHP – Determinar se é final de semana: sábado e domingo

–  PHP – Envie dados ao servidor mesmo se o usuário fechar o navegador

–  PHP Do Zero Ao Profissional – Análise do Curso

 

» Programação 

Subscribe to our mailing list

* indicates required


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

LEIA TAMBÉM:  PHP 7: Até 9 Vezes Mais Rápido Que o PHP 5.6

Email Format


React Native Do Zero Ao Profissional: crie apps para Android e IOSPowered by Rock Convert
Siga os bons!

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



Frontend Do Zero Ao Profissional