Data e hora em Português no PHP: setlocale() e strftime()

Neste tutorial de nosso Curso de PHP, vamos aprender a usar datas e horários locais, no formato e escrita de nossa língua, através das funções setlocale() e strftime().

Formatos locais: setlocale()

Até o momento, todas nossas datas e horários tem o formato americano, ou seja:
12/23/2019

Primeiro o mês, depois o dia, depois o ano.
Sendo que no Brasil primeiro usamos o dia primeiro, só depois o mês.

Quando fizemos:
echo date("d/F/Y", 1551028815);

O resultado foi: 24/February/2019
Mas não queremos 'February', somos brasileiros!

Queremos é Fevereiro!
A resposta para isso é setar o local, com a setlocale, basta fazer:
setlocale(LC_ALL, 'pt_BR');

Experimente:
<?php
	setlocale(LC_ALL, 'pt_BR');
	echo strftime('%d/%B/%G');
?>
Se não funcionar, experimente:
<?php
	setlocale(LC_ALL, 'pt_BR.utf8');
	echo strftime('%d/%B/%G');
?>

Se vai ser pt_BR ou não, vai depender do que tem instalado em seu servidor.
LC_ALL é uma constante que serve para definir várias coisas a respeito das datas locais que você vai usar.

Note que não usamos date(), e sim strftime()

A função strftime()

A função date() serve apenas para exibir as coisas em inglês padrão.
Se quisermos usar outra língua para trabalharmos com data e tempo, precisamos da strftime(), mas ela é bem semelhante a date(), mas usa outros parâmetros, veja:

%a - dia da semana abreviado
%A - dia da semana completo
%b - dia do mês abreviado
%B - dia do mês completo
%c - data e hora padrão 04/26/05 21:40:46
%C - Número do século 21
%d - Dia numérico do mês, com 0 na frente
%D - Equivalente a %m/%d/%y
%e  - Dia numérico do mês, sem o 0 na frente
%g  - Exibe o ano, mas sem o século (tipo 19 ao invés de 2019)
%G  - Ano numérico
%h  - Mesmo que %b
%H - Horário numérico de 24 horas com 0 na frente
%I - Horário numérico num relógio de 12 horas, com 0 na frente
%j - Número do dia do ano de 001 até 366
%m - Número do mês, com 0 na frente
%M - Número do minuto,com 0 na frente, de 00 até 59
%n  - Caractere de quebra de linha \n
%p - Antes e pós meridiano AM, PM
%r - Antes e pós meridianos com ponto A.M., P.M.
%R - Notação de 24 horas 00:01:00 até 23:59:59
%S - Número de segundos com zero, de 00 até 59
%t - Caractere de tab \t
%T - Equivalente a %H:%M:%S 12:23:41
%u - Dia numérico da semana, onde 1 = domingo
%U - Número numérico da semana, em que o primeiro domingo é primeiro dia da primeira semana
%V - Número numérico da semana, em que semana 1=primeira semana com>=4 dias, vai de 01 a 53
%W - Número numérico da semana, em que a primeira segunda-feira é primeiro dia da primeira semana
%w - Número do dia da semana, onde 0 = domingo
%x - Padrão de data local d:m:a
%X - Padrão de tempo local h:m:s
%y - Número do ano sem o século
%Y - Número do ano, com o século
%Z ou %z - Fuso horário do horário de verão oriental
%% - Caractere de porcentagem %