Illidan 0 Denunciar post Postado Abril 2, 2005 Função pra tratar datas no formato datetime Sempre que você recupera a data de um campo do tipo "date" ou "datetime", tem aquele processo chato de converter a string no nosso formato de data padrão (ou qualquer outro formato). Com esta função, você converte a data que vem desses campos no formato que quiser, como se estivesse utilizando a função date(). Tem um exemplo de como utilizar a função no final do código. Se você passar o terceiro parâmetro (que é opcional) como true, ele vai converter a data num timestamp antes de retornar a data formatada. A vantagem é que você pode usar TODOS os caracteres especiais da função date(), como por exemplo o "t", que retorna o número de dias no mês da data. A desvantagem é que os timestamps só trabalham num intervalo de anos... Aí você vê qual é a melhor opção no seu caso. :) Abraços! PHP <?php function date_time($date_time, $output_string, $utilizar_funcao_date = false) { // Verifica se a string está num formato válido de data ("aaaa-mm-dd" ou "aaaa-mm-dd hh:mm:ss") if (preg_match("/^(\d{4}(-\d{2}){2})( \d{2}(:\d{2}){2})?$/", $date_time)) { $valor['d'] = substr($date_time, 8, 2); $valor['m'] = substr($date_time, 5, 2); $valor['Y'] = substr($date_time, 0, 4); $valor['y'] = substr($date_time, 2, 2); $valor['H'] = substr($date_time, 11, 2); $valor['i'] = substr($date_time, 14, 2); $valor['s'] = substr($date_time, 17, 2); // Verifica se a string está num formato válido de horário ("hh:mm:ss") } else if (preg_match("/^(\d{2}(:\d{2}){2})?$/", $date_time)) { $valor['d'] = NULL; $valor['m'] = NULL; $valor['Y'] = NULL; $valor['y'] = NULL; $valor['H'] = substr($date_time, 0, 2); $valor['i'] = substr($date_time, 3, 2); $valor['s'] = substr($date_time, 6, 2); } else { return false; } if ($utilizar_funcao_date) { return date($output_string, mktime($valor['H'], $valor['i'], $valor['s'], $valor['m'], $valor['d'], $valor['Y'])); } foreach (array('d', 'm', 'Y', 'y', 'H', 'i', 's') as $caractere) { $output_string = ereg_replace("(^|[^\\\\])".$caractere, "\\1".$valor[$caractere], $output_string); } $output_string = ereg_replace("(^|[^\\\\])\\\\", "\\1", $output_string); return $output_string; } // Exemplo de como usar a função $data = "2005-04-02 00:30:00"; // formato datetime echo date_time($data, "d/m/y \à\s H:i"); // retorna a string: "02/04/05 às 00:30" ?> Compartilhar este post Link para o post Compartilhar em outros sites
red neck * 0 Denunciar post Postado Abril 3, 2005 opa, eu tava testando umas coisas e achei um outro metodo de exibir uma parte da string: PHP [*]<?php [*] [*]function replace_data($s){ // supondo que retorno aaaa/mm/dd [*] echo $s{8} . $s{9} . "/" . $s{5} . $s{6} . "/" . $s{0} . $s{1} . $s{2} . $s{3}; [*]} [*] [*]replace_data("2005/04/03"); [*] [*]?> so postei para mostrar outro jeito mesmo... abracos Compartilhar este post Link para o post Compartilhar em outros sites