Abaixo há uma função em PHP para exibir datas por extenso no seguinte formato: [Nome do dia da semana], [dia do mês] de [Nome do mês] de [Ano com 4 dígitos]. Um exemplo: Terça-feira, 17 de Abril de 2007.

Para utilizá-la proceda assim:

echo formata_data_extenso(’2007-04-17′);
echo formata_data_extenso(’2007-04-17 15:20:35′);

Essa função é muito útil quando se deseja formatar as datas armazenadas em um banco de dados MySQL, por exemplo; em que elas estão armazenadas no formato date, datetime ou timestamp.

O código da função segue abaixo:

/**
* Esta função retorna uma data escrita da seguinte maneira:
* Exemplo: Terça-feira, 17 de Abril de 2007
* @author Leandro Vieira Pinho [http://leandro.w3invent.com.br]
* @param string $strDate data a ser analizada; por exemplo: 2007-04-17 15:10:59
* @return string
*/
function formata_data_extenso($strDate)
{
// Array com os dia da semana em português;
$arrDaysOfWeek = array(‘Domingo’,'Segunda-feira’,'Terça-feira’,'Quarta-feira’,'Quinta-feira’,'Sexta-feira’,'Sábado’);
// Array com os meses do ano em português;
$arrMonthsOfYear = array(1 => ‘Janeiro’,'Fevereiro’,'Março’,'Abril’,'Maio’,'Junho’,'Julho’,'Agosto’,'Setembro’,'Outubro’,'Novembro’,'Dezembro’);
// Descobre o dia da semana
$intDayOfWeek = date(‘w’,strtotime($strDate));
// Descobre o dia do mês
$intDayOfMonth = date(‘d’,strtotime($strDate));
// Descobre o mês
$intMonthOfYear = date(‘n’,strtotime($strDate));
// Descobre o ano
$intYear = date(‘Y’,strtotime($strDate));
// Formato a ser retornado
return $arrDaysOfWeek[$intDayOfWeek] . ‘, ‘ . $intDayOfMonth . ‘ de ‘ . $arrMonthsOfYear[$intMonthOfYear] . ‘ de ‘ . $intYear;
}

Comentários para melhoria são bem-vindos.