Eu achei que ia conseguir ficar um mês inteiro sem postar nada, mas eis que aos 45 do segundo tempo surgiu a necessidade de blogar. Minhas mãos está suadas e eu não consegui evitar, desculpem…

Então, estava procurando exatamente isso que o título monstruoso diz, uma função que formatasse o timestamp do MySql em uma data bonita, como em segunda-feira 29 de outubro de 2007 as 15:00:00 ou coisa parecida. Como sou um programado muito ruim (ainda em que não vivo disso) acabei fuçando o Google e me deparei com este post do Leandro Veira (ótimo blog) que faz o serviço, porém com um detalhe (atenção aqui eu começo a falar de programação, é algo chato até pra mim): Mesmo que a string fornecida contivesse uma hora a mesma era suprimida na string de resultado. Como a função é extremamente bem comentada, achei que seria fácil adicionar a hora no resultado. Consultei o melhor livro de php que existe o manual, ou a bíblia se preferir e fui apresentado a função substr() que faz o trabalho maravilhosamente bem.

Eis abaixo a função completa com a alteração. Este post gera um trackback no post original do Leandro, que serve como forma de agradecimento, e também de informação que sua função fez bem pra alguém. Por enquanto a bobagem que desenvolvi é para uso pessoal, mas caso alguém tenha interesse, é uma espécie de Twitter para uso pessoal (registro de ocorrências de qualquer tipo) se alguém se interessar eu cadastro o projeto no sourceforge e continuamos dali.

Sem mais delongas o código abaixo (sem formatação, já que eu não sei fazer isso).

/**
* 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));
//Retorna também a hora (Adicionado por Rafael (ebalaio.com)
$intHour = substr($strDate,10,20);
// Formato a ser retornado
return $arrDaysOfWeek[$intDayOfWeek] . ‘, ‘ . $intDayOfMonth . ‘ de ‘ . $arrMonthsOfYear[$intMonthOfYear] . ‘ de ‘ . $intYear . ‘ às ‘.$intHour;
}

Compare Preços de: DVD, MP3, LCD, Plasma, HDTV, Home Theater no JáCotei.