Obter a data atual por extenso (pt_BR) em PHP

Para obter o resultado em português do Brasil, basta utilizar a função setlocale do PHP para definir o local como pt_BR.utf-8 antes de chamar a função strftime.

Veja como ficaria o código:

function data_extenso() {
    setlocale(LC_TIME, 'pt_BR.utf-8');
    $extenso = special_ucwords(strftime('%A, %d de %B de %Y', strtotime('today')));
    return $extenso;
}

Dessa forma, a função strftime irá formatar a data em português do Brasil, seguindo as regras de formatação definidas pela linguagem.

Porém, pode ser necessário definir o locale para toda a aplicação. Isso pode ser feito no início do seu script PHP, antes de chamar qualquer função que dependa do locale definido.

Além disso, é importante verificar se o locale pt_BR.utf-8 está disponível no sistema onde a aplicação está sendo executada. Se não estiver disponível, pode ser necessário instalar o pacote de localização correspondente no sistema operacional.

Aqui está um exemplo de como definir o locale pt_BR.utf-8 no início do seu script PHP:

setlocale(LC_ALL, 'pt_BR.utf-8');

Dessa forma, o locale será definido para toda a aplicação e a função strftime irá formatar a data em português do Brasil.

Se ainda assim não funcionar, pode ser necessário verificar se o locale está disponível no sistema e se o formato da data está correto.

Também é possível traduzir a função manualmente para obter o resultado em português do Brasil. Aqui está um exemplo de como fazer isso:

phpCopy codefunction data_extenso() {
    $dias_semana = array(
        'Domingo',
        'Segunda-feira',
        'Terça-feira',
        'Quarta-feira',
        'Quinta-feira',
        'Sexta-feira',
        'Sábado'
    );

    $meses_ano = array(
        '',
        'Janeiro',
        'Fevereiro',
        'Março',
        'Abril',
        'Maio',
        'Junho',
        'Julho',
        'Agosto',
        'Setembro',
        'Outubro',
        'Novembro',
        'Dezembro'
    );

    $data = date('Y-m-d');
    $partes = explode('-', $data);
    $dia = $partes[2];
    $mes = $meses_ano[(int)$partes[1]];
    $ano = $partes[0];
    $dia_semana = $dias_semana[date('w', strtotime($data))];

    $extenso = $dia_semana . ', ' . $dia . ' de ' . $mes . ' de ' . $ano;
    return $extenso;
}

Nesse exemplo, a função utiliza arrays para armazenar os nomes dos dias da semana e dos meses do ano em português do Brasil. Em seguida, a função obtém a data atual e utiliza a função explode para separar as partes da data em ano, mês e dia. Depois, a função formata a data no formato desejado utilizando os nomes dos dias da semana e dos meses do ano em português do Brasil.

Essa abordagem pode ser útil quando não é possível definir o locale corretamente ou quando é necessário personalizar a formatação da data. No entanto, é importante lembrar que essa solução pode ser menos flexível do que a utilização da função strftime, que permite alterar a formatação da data de maneira mais fácil e com suporte a diversos idiomas.

Rolar para cima